我使用lucene雪球分析仪进行干预.结果不是有意义的话.我提到了这个问题.
其中一个解决方案是使用一个数据库,该数据库包含单词的词干版本与单词的一个稳定版本之间的映射.(无论社区的基础是什么(社区/或其他一些词),从社区到社区的例子)
我想知道是否有一个执行这样功能的数据库.
对于我正在研究的项目,我需要一个很好的词干算法.有人建议我看看Porter Stemmer.当我查看Porter stemmer上的页面时,我发现现在已经弃用了它,而选择了"Snowball"限制器.
我需要一个好的词干,但我真的不能花很多时间来实现(或优化)我自己的.什么是最好的"现成的",免费提供的干扰器?是否有合理价格的非自由阀杆?或者,Snowball阻尼器是我最好的选择吗?
我很震惊.
我花了3-4天时间搞清楚如何在SQL Server中实现词干(和同义词搜索)时,我在SQL Server中看到的查询非常简单:
Select * from tab where CONTAINS(*,'FORMSOF(THESAURUS,word)')
Run Code Online (Sandbox Code Playgroud)
可能在MySql上有没有这样的东西?
我添加到索尔索引:"美国".当我搜索"美国"时,没有结果.
如何配置schema.xml以获得结果?
目前的配置:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
<filter class="solr.PorterStemFilterFactory"/> …Run Code Online (Sandbox Code Playgroud) 我想使用R中的tm包来阻止纯文本文档语料库中的文档.当我将SnowballStemmer函数应用于语料库的所有文档时,只会阻止每个文档的最后一个单词.
library(tm)
library(Snowball)
library(RWeka)
library(rJava)
path <- c("C:/path/to/diretory")
corp <- Corpus(DirSource(path),
readerControl = list(reader = readPlain, language = "en_US",
load = TRUE))
tm_map(corp,SnowballStemmer) #stemDocument has the same problem
Run Code Online (Sandbox Code Playgroud)
我认为这与文档被读入语料库的方式有关.用一些简单的例子说明这一点:
> vec<-c("running runner runs","happyness happies")
> stemDocument(vec)
[1] "running runner run" "happyness happi"
> vec2<-c("running","runner","runs","happyness","happies")
> stemDocument(vec2)
[1] "run" "runner" "run" "happy" "happi" <-
> corp<-Corpus(VectorSource(vec))
> corp<-tm_map(corp, stemDocument)
> inspect(corp)
A corpus with 2 text documents
The metadata consists of 2 tag-value pairs and a data frame
Available tags are: …Run Code Online (Sandbox Code Playgroud) 我正在寻找希伯来语的好词干-使用Google我一无所获...
在HebMorph网站上说:
Stem and Lemma originally have different meanings, but for Semitic languages they seem to be used interchangeably.
这是否意味着出于NLP目的,我可以使用引理代替词干?牢记:Stemmers are much simpler, smaller and usually faster then lemmatizers, and for many applications their results are good enough. Using a lemmatizer for that is a waste of resources.(源)
谢谢。
我正在使用apache lucene开发一个文本分析项目.我需要对一些文本进行引理(将单词转换为规范形式).我已经编写了代码来制作词干.使用它,我能够转换下面的句子
词干是这个词的一部分,即使在形态上变化时也不会改变; 引理是这个词的基本形式.例如,从"产生",引理是"产生",但干是"产生 - ".这是因为有生产这样的词
至
即使形态学变形引理基础形式单词例子来自产品引理产品干产品因为字产品
不过,我需要的话基本形式:例如,而不是为例,产生的替代produc,等等.
我正在使用lucene,因为它有多种语言的分析器(我至少需要英语和俄语).我知道斯坦福NLP图书馆,但它没有俄语支持.
那么有没有办法对几种语言进行词形还原,就像我使用lucene一样?
我的代码的简化版本负责阻止:
//Using apache tika to identify the language
LanguageIdentifier identifier = new LanguageIdentifier(text);
//getting analyzer according to the language (eg, EnglishAnalyzer for 'en')
Analyzer analyzer = getAnalyzer(identifier.getLanguage());
TokenStream stream = analyzer.tokenStream("field", text);
stream.reset();
while (stream.incrementToken()) {
String stem = stream.getAttribute(CharTermAttribute.class).toString();
// doing something with the stem
System.out.print(stem+ " ");
}
stream.end();
stream.close();
Run Code Online (Sandbox Code Playgroud)
更新:我发现这个库几乎可以满足我的需求(英语和俄语)并使用apache lucene(尽管以自己的方式),它绝对值得探索.
我正在用 Python 编写一个文本分类系统。这就是我正在做的标准化每个标记的事情:
lem, stem = WordNetLemmatizer(), PorterStemmer()
for doc in corpus:
for word in doc:
lemma = stem.stem(lem.lemmatize(word))
Run Code Online (Sandbox Code Playgroud)
我不想仅仅进行词形还原的原因是因为我注意到它WordNetLemmatizer没有处理一些常见的词形变化。例如,对于副词来说,lem.lemmatize('walking')returns walking。
同时进行词干提取和词形还原是否明智?还是多余的?研究人员通常会选择其中之一,而不是两者都做?
我有大约 140 万个文档,每个文档的平均字符数为(中位数:250 和平均值:470)。
我想在对它们进行分类之前执行拼写检查和词干提取。
模拟文件:
sentence <- "We aree drivng as fast as we drove yestrday or evven fastter zysxzw" %>%
rep(times = 6) %>%
paste(collapse = " ")
nchar(sentence)
[1] 407
Run Code Online (Sandbox Code Playgroud)
函数首先执行拼写检查,然后进行词干提取
library(hunspell)
library(magrittr)
spellAndStem <- function(sent, language = "en_US"){
words <- sentence %>%
strsplit(split = " ") %>%
unlist
# spelling
correct <- hunspell_check(
words = words,
dict = dictionary(language)
)
words[!correct] %<>%
hunspell_suggest(dict = language) %>%
sapply(FUN = "[", 1)
# stemming
words %>%
hunspell_stem(dict = …Run Code Online (Sandbox Code Playgroud) keras tokenizer 是否提供词干提取和词形还原等功能?如果是的话,那么它是如何完成的呢?需要直观的理解。另外,text_to_sequence这有什么作用?