我对ElasticSearch中何时使用词干分析器感到困惑。
在Dealing with Human Language/Reducing Words to Their Root Form部分中,我看到词干分析器用于将单词剥离为其词根形式。这使我相信词干分析器被用作分析器上的令牌过滤器。
但是令牌过滤器只过滤令牌,实际上并不会将单词缩减为其词根形式。
那么,词干分析器用在哪里呢?
我正在使用ruby的词干gem来词干一些单词。我有一个类似于下面的类naivebayes.rb:
require "stemmer"
.....
class Naivebayes
include Stemmable
def clean_word(word)
..
...
stem(word)
end
end
我省略了一些代码。当我在rails应用程序之外运行它时,同样的代码运行得非常好,如下所示: ruby naivebayes.rb。然而,当我在rails控制台或控制器中的rails应用程序中运行它时,
我正在用Python编写一个文本分类系统。这就是我用来规范化每个令牌的方法:
lem, stem = WordNetLemmatizer(), PorterStemmer()
for doc in corpus:
for word in doc:
lemma = stem.stem(lem.lemmatize(word))
我不想只使用词形的原因是因为我注意到WordNetLemmatizer没有处理一些常见的词形变化。例如,对于副词,lem.lemmatize('walking')返回walking。
同时执行词干分析和词汇化是否明智?或者它是多余的?
我正在使用英语标记器来解析标记,我正面临着一个奇怪的情况,像真的/回复这样的单词被转换成realli,repli。
下面是我正在使用的代码片段。
object Learning {
def tokenize(content: String): Seq[String] = {
val tReader = new StringReader(content)
val analyzer = new EnglishAnalyzer()
val tStream = analyzer.tokenStream("contents", tReader)
va