12

在 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”(词根)吗?

4

4 回答 4

2

您可能正在寻找词干分析器。以下是CRAN 任务视图中的一些词干分析器:自然语言处理

  • RWeka是 Weka 的接口,Weka 是用 Java 编写的用于数据挖掘任务的机器学习算法的集合。在自然语言处理的上下文中特别有用的是它的标记化和词干提取功能。

  • Snowball提供了 Snowball 词干分析器,其中包含 Porter 词干分析器和其他几种不同语言的词干分析器。有关详细信息,请参阅 Snowball 网页。

  • Rstem是 Porter 词干算法的 C 版本的替代接口。

于 2011-10-12T16:09:10.110 回答
1

如果没有良好的英语形态知识,您将不得不使用现有的库而不是创建自己的词干分析器。

英语充满了意想不到的形态学上的惊喜,它们会影响概率模型和基于规则的模型。一些例子是:

  • 删除in-前缀以删除-able后缀,如inhabitable
  • 单词类别的变化,如从动词 bicycling 中提取的名词自行车可能会影响基于类别的规则)。
  • 具有否定意义的词不能带否定前缀(你可以有unpretty,但不能有unugly)。
  • 两个词作为复合词,如“卡车司机”(当你词干时你会将它们视为一个词)。

英语也有 I-umlaut 的问题,其中诸如 men、geese、foot、best 和许多其他单词(都带有类似“e”的声音)之类的单词不容易被词干。像automaton之类的外来借词词干也可能是一个问题。

最高级形式的词干是例外的一个很好的例子:

最好->好

最年长的 -> 旧的

lemmatizer 将解释此类异常,但会更慢。您可以查看 Porter 词干分析器规则以了解您需要什么,或者您可以使用它的 SnowballC R 包。

于 2015-02-26T19:00:09.327 回答
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
于 2011-12-29T18:13:10.640 回答
-1

当我需要做类似的事情时,我在一个文本文件中写出我的单词列表,并将其提供给 English Lexicon Project 的网络查询工具,然后将结果解析回 R。有点笨拙,但有很多好的数据可从 ELP 获得。为了您的使用,请查看 ELP 的 MorphSP。为了幸福,它给予{happy}>ness>

http://elexicon.wustl.edu/query14/query14.asp

于 2011-11-11T18:05:10.993 回答