在使用R中的NLP进行词干化时,有没有办法获得基本词而不是词根?
代码:
> #Loading libraries
> library(tm)
> library(slam)
>
> #Vector
> Vec=c("happyness happies happys","sky skies")
>
> #Creating Corpus
> Txt=Corpus(VectorSource(Vec))
>
> #Stemming
> Txt=tm_map(Txt, stemDocument)
>
> #Checking result
> inspect(Txt)
A corpus with 2 text documents
The metadata consists of 2 tag-value pairs and a data frame
Available tags are:
create_date creator
Available variables in the data frame are:
MetaID
[[1]]
happi happi happi
[[2]]
sky sky
>
我可以使用R为“happyness happies happys”获得基本单词“happy”(基本单词)而不是“happi”(根单词)。
答案 0 :(得分:2)
你可能正在寻找一个干扰器。 以下是CRAN Task View: Natural Language Processing的一些词干分析器:
答案 1 :(得分:1)
如果没有良好的英语形态学知识,就必须使用现有的库,而不是创建自己的词干分析器。
英语中充满了意想不到的形态意外,这些意外会影响概率模型和基于规则的模型。一些例子是:
英语也有I-umlaut的问题,其中像男人,鹅,脚,最好的,以及许多其他单词(都具有'类似的声音)这样的单词不容易被阻止。阻止外来的借词,如自动机,也可能是一个问题。
阻止最高级形式是例外的一个很好的例子:
最好 - >好
eldest - >
一个lemmatizer会解释这种例外情况,但速度会慢一些。您可以查看Porter干扰器规则以了解您的需求,或者您可以使用其SnowballC R包。
答案 2 :(得分:0)
stemCompletion
可以在这里使用。这不是最好的,但可以管理。
Stemm = tm_map(Txt, stemCompletion, dictionary=Txtt)
inspect(Stemm)
A corpus with 2 text documents
The metadata consists of 2 tag-value pairs and a data frame
Available tags are:
create_date creator
Available variables in the data frame are:
MetaID
[[1]]
happyness happies happies
[[2]]
sky sky
答案 3 :(得分:-1)
当我需要做类似的事情时,我在文本文件中写出了我的单词列表,并将其提供给英语Lexicon Project的Web查询工具,然后将结果解析回R.有点笨重,但很多ELP提供了良好的数据。 供您使用,请查看ELP的MorphSP。为了幸福,它给了{happy}> ness>