在Lucene中对Twitter帖子进行标记

时间:2010-03-31 17:26:09

标签: twitter lucene tokenize

我的问题简而言之:有没有人知道Lucene的 TwitterAnalyzer TwitterTokenizer

更详细的版本:

我想在Lucene中为一些推文编制索引,并保持 @user #hashtag 等条款不变。 StandardTokenizer不起作用,因为它丢弃了标点符号(但它还有其他有用的东西,比如保留域名,电子邮件地址或识别首字母缩略词)。我怎样才能拥有一台分析仪,它可以完成StandardTokenizer所做的一切,但不会触及像@user和#hashtag这样的术语?

我目前的解决方案是在将推文发送到分析器之前对其进行预处理,并用其他字母数字字符串替换字符。例如,

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

不幸的是,这种方法破坏了合法的电子邮件地址,但我可以忍受。这种方法有意义吗?

提前致谢!

AMAC

6 个答案:

答案 0 :(得分:5)

StandardTokenizer和StandardAnalyzer基本上通过StandardFilter传递你的标记(它会删除标准标记中的所有类型的字符,比如单词的末尾),然后是小写过滤器(小写单词),最后是StopFilter 。最后一个删除了无关紧要的词,如“as”,“in”,“for”等等。

开始时你可以轻松做的是实现你自己的分析器,它执行与StandardAnalyzer相同的操作,但使用WhitespaceTokenizer作为处理输入流的第一个项目。

有关分析仪内部工作原理的详细信息,请查看here

答案 1 :(得分:1)

使用自定义标记程序来本地处理Twitter用户名会更干净。我在这里做了一个:https://github.com/wetneb/lucene-twitter

此令牌生成器将识别Twitter用户名和标签,并且可以使用配套过滤器将其小写(假定它们不区分大小写):

<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>

答案 2 :(得分:0)

答案 3 :(得分:0)

可以在http://preciselyconcise.com/apis_and_installations/tweet_pos_tagger.php找到关于twitter特定标记器的教程,它是ark-tweet-nlp API的修改版本。 此API能够识别推文中出现的表情符号,主题标签,插入内容等

答案 4 :(得分:0)

可以告诉Twitter API将已经从内容中解析出来的“实体”(hashtags,userIds,urls等)返回到集合中的所有Tweets,Bios等。

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

那么,您是不是只想找到一种方法来重新做一些Twitter上的人已经为您做过的事情?

答案 5 :(得分:0)

Twitter开源有文本进程lib,为hashtag等实现了令牌处理程序。

如:HashtagExtractor https://github.com/twitter/commons/blob/master/src/java/com/twitter/common/text/extractor/HashtagExtractor.java

它基于lucene的TokenStream。