7
votes

Tokenizing Twitter Posts à Lucene

Ma question en un mot: Quelqu'un peut-il connaître un twitteranalyzer em> ou TwitterTokenizer em> pour Lucene?

Version plus détaillée: P>

Je veux Pour indexer un certain nombre de tweets à Lucene et conservez les termes tels que @user em> ou #hashtag em> intacts. StandardTokenizer ne fonctionne pas car il résiste à la ponctuation (mais il utilise d'autres éléments utiles comme garder les noms de domaine, les adresses électroniques ou la reconnaissance des acronymes). Comment puis-je avoir un analyseur qui fait tout ce que StandardTokenizer, mais ne touche pas termes comme @user et #hashtag? P>

Ma solution actuelle consiste à préprocéder le texte Tweet avant de l'alimenter dans l'analyseur et à remplacer les caractères par autres cordes alphanumériques. Par exemple, P>

String newText = newText.replaceAll("#", "hashtag");
newText = newText.replaceAll("@", "addresstag");


2 commentaires

À quoi ressemble votre solution finale?


Si vous avez besoin d'une solution pour SOLR, cela pourrait aider: Problèmes.apache.org/jira/browse / SolR-2059 et quelque chose comme "# => alpha" "@ => alpha"


6 Réponses :


5
votes

Le standardTokenizer et StandardAnalalyzer passe essentiellement vos jetons via un StandardFilter (qui supprime toutes sortes de caractères de vos jetons standard tels que 'S à la fin des mots), suivi d'un filtre minuscule (pour minuscule vos mots) et enfin par un stopfilter . Ce dernier élimine des mots insignifiants comme "comme", "dans", "pour", etc.

Ce que vous pourrez facilement faire pour commencer est de mettre en œuvre votre propre analyseur qui fonctionne de la même manière que le standardAnalyzer, mais utilise une utilisation blanche comme premier élément qui traite le flux d'entrée.

Pour plus de détails, vous pouvez consulter le fonctionnement intérieur des analyseurs, vous pouvez consulter ici


4 commentaires

Merci. J'ai déjà essayé de mettre en œuvre mon propre analyseur à l'aide de WhitSespaceTolider au lieu de StandardTokenizer. Mais cela laisse des noms d'hôtes, des adresses électroniques et une autre substance méconnue et tokenized erroneusement. J'aimerais traiter un flux avec mon personnalisé TwitterTokenzerzer (qui gère @s et des # ne fait rien d'autre) puis nourrissez le flux résultant dans un dossier standard et allez à partir de là. Cependant, autant que je sache, un analyseur ne peut avoir qu'un seul tokénateur au début de la chaîne.


Une autre approche pourrait être d'utiliser PerfieldanalyzerWrapper et de faire une deuxième passe dans le contenu pour rechercher explicitement des balises de hasch et des références d'utilisateurs et de les mettre dans un champ distinct de votre document (E.G. 'Tags' et «Réponses»). Les analyseurs pour ces champs ne renvoient que des jetons pour des occurrences de #tag et @user respectivement.


Oui, ça a du sens. Merci!


Le lien est cassé. Vous pouvez désormais voir les analyseurs ici .



0
votes

0 commentaires

0
votes

Un didacticiel sur Twitter Spécifique Tokenizer, une version modifiée de ARK-Tweet-NLP API peut être trouvée sur http://preciselyconcise.com/apis_and_installations/tweet_pos_tagerg.php Cette API est capable d'identifier des émoticônes, des hashtags, des interjections, etc. présents dans un tweet


0 commentaires

0
votes

L'API Twitter peut être dit de retourner tous les tweets, le BIOS, etc. avec les "entités" (HASHTAGS, ID utilisateur, URL, etc.) déjà analysé du contenu dans des collections.

https://dev.twitter.com/docs/entities

Vous n'êtes donc pas à la recherche d'un moyen de faire de la récidive sur laquelle les gens de Twitter ont déjà fait pour vous?


0 commentaires

0
votes

Twitter Open Source, Text Text Process Lib, implémente le gestionnaire de jetons pour HASHTAG, etc.

tel que: hashtagextractor https: // github.com/twitter/commons/blob/master/src/java/com/twitter/common/text/extractor/hashastagextractor.java

Il est basé sur la jeton de Lucene.


0 commentaires

1
votes

Il est plus propre d'utiliser un tokéniseur personnalisé qui gère les noms d'utilisateur Twitter Nativement. J'y ai fait une ici: https://github.com/wetneb/lucène-twitter Ce tokéniseur reconnaîtra les noms d'utilisateur et les hachons de Twitter, et un filtre compagnon peut être utilisé pour les minuscule (étant donné qu'ils sont insensibles à la casse): P>

<fieldType name="text_twitter" class="solr.TextField" positionIncrementGap="100" multiValued="true">
  <analyzer type="index">
    <tokenizer class="org.opentapioca.analysis.twitter.TwitterTokenizerFactory" />
    <filter class="org.opentapioca.analysis.twitter.TwitterLowercaseFilterFactory" />
  </analyzer>
  <analyzer type="query">
     <tokenizer class="org.opentapioca.analysis.twitter.TwitterTokenizerFactory" />
     <filter class="org.opentapioca.analysis.twitter.TwitterLowercaseFilterFactory" />
  </analyzer>
</fieldType>


0 commentaires