[PYTHON] Détecter l'état de recherche perdu à partir de l'historique des requêtes de recherche Google Chrome

introduction

Avez-vous déjà perdu votre temps parce que les informations que vous recherchiez sur le Web étaient difficiles à trouver? Si je ne fais pas attention, je peux finir par chercher sans fin. Je pense qu'il y a pas mal de cas où vous vous perdez dans une recherche où vous ne pouvez pas obtenir les informations que vous voulez, peu importe le nombre de fois que vous effectuez une recherche. Je pensais que si je pouvais juger objectivement l'état de l'enfant perdu, je n'aurais pas à passer du temps inutile, alors j'ai enquêté pour savoir s'il serait possible de juger avec les informations disponibles.

Dans cet article, nous avons examiné et analysé s'il est possible de déterminer l'état de la recherche perdue en analysant la façon dont la requête de recherche change à l'aide de l'historique de recherche de plusieurs personnes. En conséquence, je ne pouvais pas juger clairement l'état perdu de la recherche, mais je sentais qu'il serait possible d'augmenter les variables de l'analyse et d'appréhender la tendance sous un autre angle.

Rechercher l'état de l'enfant perdu

supposition

Cette fois, on suppose que le changement de la requête de recherche est efficace comme facteur pour juger de la situation où la recherche est perdue. Je pense qu'il est naturel que même si vous effectuez une recherche répétée en modifiant la combinaison de mots, seules les pages similaires seront consultées. De plus, même si vous changez simplement le libellé, il est peu probable que vous rencontriez des pages utiles. En d'autres termes, s'il y a peu de changement dans la requête de recherche, on peut dire que la recherche est perdue.

Technologie existante pour la résolution de problèmes

D'autre part, on peut dire que vous n'êtes pas dans un état de recherche perdu car vous vous rapprochez de la page que vous recherchiez en obtenant de nouvelles informations sur la cible de recherche ou en modifiant la requête de recherche avec une nouvelle idée. Afin d'éviter la perte des conditions de recherche, la solution est tentée en développant des requêtes telles que Google Suggérer et en recommandant des résultats de recherche basés sur les préférences de l'utilisateur sur la base d'un filtrage coopératif utilisant les informations de recherche d'autres utilisateurs. Je vais.

Vérifier les points cette fois

En revanche, dans cet article, nous avons confirmé s'il était possible de détecter l'état perdu de la recherche au lieu de l'éliminer. Si vous recherchez une phrase spécifique, vous pouvez la résoudre avec la technologie existante, mais je pense que la recherche perdue en raison du fait que vous ne comprenez pas clairement le terme de recherche peut ne pas être encore bien résolue. Donc, tout d'abord, je voulais encourager les gens autour de moi à obtenir du soutien en appréhendant la situation où je me perdais dans la recherche, alors j'ai cherché à savoir si cela pouvait être jugé.

Résumé de l'analyse

Cette fois, nous avons mené une enquête selon le flux suivant.

Kobito.Y1nW4f.png

  1. Obtenez une requête de recherche de Google Chrome
  2. Analysez la transition des requêtes de recherche à l'aide de Python
  3. Représentez graphiquement les résultats

Environnement / utilisé

· Mac ・ Historique de recherche Google Chrome ・ Python (3.6.0)

une analyse

Historique de recherche Google Chrome

Emplacement des données d'historique de recherche

Dans Google Chrome, non seulement l'historique des pages consultées, mais également des informations telles que les informations de requête de recherche et la dernière date de consultation de l'URL cible sont stockées localement.

~/Library/Application\ Support/Google/Chrome/Default/History
Local Settings/Application Data/Google/Chrome/User Data/Default/History

Parcourir les données de l'historique de recherche

L'historique est stocké au format SQLite3, qui est un SGBDR qui s'exécute sur votre application. Si vous utilisez un Mac, vous pouvez naviguer à partir de CUI sans aucune préparation particulière. Il est préférable de faire une copie avant de naviguer.

$sqlite3 History

Comme il peut être manipulé avec des instructions SQL similaires à oracle, etc., si vous avez touché au SGBDR, vous n'aurez aucun problème pour acquérir des données. Si vous vous souvenez de .schema, qui produit des informations de schéma, .table, qui produit une liste de tables, et .output, qui change la destination de sortie, comme des commandes caractéristiques souvent utilisées, vous n'aurez aucun problème. Il peut être exécuté en lisant un fichier SQL externe ou en utilisant .read file name.

[référence] http://qiita.com/northriver/items/3f48f27b60f6362d330c http://l-w-i.net/t/sqlite/ext_001.txt https://www.dbonline.jp/sqlite/sqlite_command/list.html

De plus, il peut être géré par GUI en installant l'application suivante. (Compatible avec Windows et Mac) DB Browser for SQLite

À propos des données d'historique de recherche

Cette fois, j'ai utilisé keyword_search_terms qui est l'information de la table d'historique des requêtes de recherche.

De plus, comme il n'y avait pas beaucoup d'informations détaillées sur les données dans l'Histoire, je décrirai les informations trouvées en enquêtant.

・ À propos du nom de la colonne Notez que chaque table a un nom de colonne avec le même nom, mais ils n'ont pas toujours la même signification. Exemple) urls.id = visites.url

・ À propos des informations de date et d'heure Veuillez noter que la date de base et l'unité diffèrent selon la colonne. visites.visit_time est basé sur le 1er janvier 1961, l'unité est la microseconde downloads.start_time est basé sur le 1er janvier 1970, l'unité est la deuxième [Référence] http://www.forensicswiki.org/wiki/Google_Chrome

・ À propos de la transition Le format de certaines colonnes étant inconnu, de nombreux éléments ne peuvent pas être compris. Bien que non utilisé cette fois, urls.transition est un code qui montre comment la page a été transférée. (Saisie ouverte en saisissant directement un lien ou une URL d'une autre page, etc.) Le code de transition peut être obtenu en convertissant de binaire en hexadécimal et en prenant le produit logique de 0xFF.

[Référence] Comment trouver la valeur du code de transition https://groups.google.com/a/chromium.org/forum/#!topic/chromium-discuss/r7UQ2i98Lu4 [Référence] Signification de la valeur du code de transition https://developer.chrome.com/extensions/history

Mesure de l'efficacité de la recherche

À propos du score de recherche

Nous avons mesuré la similitude avec les requêtes de recherche précédentes pour chaque tentative de recherche et calculé un score qui indique que l'efficacité de la recherche se détériore s'il existe de nombreux mots similaires.

Pour le calcul de la similitude entre les mots, nous avons utilisé difflib, qui est préparé comme une bibliothèque standard en Python. Comparez avec SequenceMatcher et calculez la similitude. Il peut être utilisé comme suit. La similitude est calculée de 0 (pas de correspondance du tout) à 1 (correspondance exacte).

>>> difflib.SequenceMatcher(None, 'python','python3').ratio()
0.9230769230769231

Voici un exemple de calcul du score de recherche à l'aide de ceci. Celles reliées par la ligne rouge sont les combinaisons de mots avec le plus haut degré de similitude. Le score de la deuxième recherche sera "0,64".

Plus le score de recherche calculé est proche de 0, plus la similitude peut être jugée faible, et je voudrais l'utiliser comme base pour déterminer si la recherche est perdue ou non.

Expérience

Données cibles

Nous avons reçu l'historique Chrome de 4 personnes et l'avons confirmé. En ce qui concerne le contenu de l'histoire, je voulais que vous recherchiez les questions présentées ici en 10 minutes. En plus de cela, nous avons ciblé l'historique de recherche arbitraire que nous utilisons habituellement. L'un d'eux est mon aîné et la tâche de recherche est effectuée très rapidement. Les trois autres sont des juniors.

Pré-traitement

Seule la transition de la requête de recherche qui semble avoir été recherchée dans un seul but a été extraite et utilisée comme données de test. De plus, comme l'historique Chrome contient à la fois les informations telles qu'elles sont dans la requête de recherche et les informations dans lesquelles toutes les lettres sont en lettres minuscules, nous avons utilisé les informations converties en lettres minuscules cette fois.

Voici un exemple.

installation mac postgresql
emplacement d'installation mac postgresql
spécification de l'emplacement d'installation postgresql mac
changement de répertoire d'installation mac postgresql

L'axe horizontal correspond au nombre de tentatives de recherche et l'axe vertical correspond au score de recherche. La première fois est 0 car il n'y a pas de cible de comparaison. Dans cet exemple, la requête de recherche n'a pas beaucoup changé, donc le score de recherche continue d'augmenter.

résultat

Kobito.4jPMyn.png

À propos du score des tâches courantes

La ligne rouge est le résultat de la recherche de problèmes courants. L'ancien est arrivé à l'information cible pour la sixième fois, mais les trois autres étaient hors de temps.

Le score de recherche de mes aînés a chuté de manière significative de la 4e à la 5e fois, et lorsque j'ai vérifié la requête, cela a radicalement changé. Au début de la recherche, nous n'avons pu rechercher que des mots abstraits, mais au fur et à mesure, nous avons trouvé des mots spécifiques à rechercher.

D'un autre côté, M. A et M. C n'ont pas eu un grand changement dans la requête de recherche, et j'ai pu lire la situation qui les inquiétait. De plus, lorsque je me suis concentré sur les données de la ligne bleue de M. B, le score est passé de la 5e à la 6e fois, mais je viens de lire de l'anglais au japonais. Je pense qu'il y a des avantages et des inconvénients à savoir s'il s'agit ou non d'une situation de nivellement.

À propos du score de la recherche normale

En lisant le graphique, j'ai eu l'impression que les personnes âgées ayant une capacité de recherche élevée avaient de faibles scores de recherche, mais il semble que des recherches supplémentaires soient nécessaires pour voir si elles sont appropriées car il y a peu de données.

Pour le futur

・ Amélioration de la méthode de calcul des scores J'ai senti que le score de recherche supposé comme la tendance de l'état perdu de la recherche pouvait encore être utile, je voudrais donc améliorer la méthode de calcul du score.

・ Service utilisant le score de recherche Nous aimerions définir un seuil pour le score de recherche afin d'éliminer l'état de recherche perdu, et s'il le dépasse, nous aimerions créer un service tel que notifier l'utilisateur pour en être conscient et coopérer avec les autres.

Recommended Posts

Détecter l'état de recherche perdu à partir de l'historique des requêtes de recherche Google Chrome
Enregistrer l'image du chien à partir de la recherche d'images Google
[Python] Téléchargez l'image d'origine à partir de la recherche d'images Google
Sortie CSV de la recherche Google avec [Python]! 【Facile】