在R中使用基础词干处理而不是根词干处理

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 获取“happiness happies happys”中的基本单词“happy”,而不是根单词“happi”。


不确定具体R语言是否需要,但总的来说你需要一个形态分析器。例如,你可以使用这个操作系统自带的分析器:http://seman.svn.sourceforge.net/viewvc/seman/trunk/Docs/Morph_UNIX.txt?revision=124&view=markup - D_K
很可能你对词干不感兴趣,而是想要一个词形还原器。嗯,如果你需要的话,我可以分享我的英语开源词形还原器给你。但它是用Python编写的... - alvas
4个回答

2

您可能正在寻找词干提取器。

以下是来自CRAN任务视图:自然语言处理的一些词干提取器:

  • RWeka是Weka的接口,Weka是一个用Java编写的数据挖掘任务的机器学习算法集合。在自然语言处理的背景下特别有用的是它的分词和词干提取功能。

  • Snowball提供了包含Porter词干提取器和其他几种语言的词干提取器的Snowball词干提取器。有关详细信息,请参见Snowball网页。

  • Rstem是Porter单词词干提取算法的C版本的另一种接口。


1

如果你对英语形态学没有很好的了解,你将不得不使用现有的库而不是创建自己的词干分析器。

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

  • 去掉前缀 in- 以去除后缀 -able,例如在单词 inhabitable 中。
  • 单词类别的变化,例如从动词 bicycling 分析出名词 bicycle(可能会影响基于类别的规则)。
  • 具有负面含义的单词不能带有否定前缀(可以有 unpretty,但不能有 unugly)。
  • 两个单词作为一个复合词,例如 "truck driver"(在分析词干时应将它们视为一个单词)。

英语还存在 I-umlaut 的问题,例如 men、geese、feet、best 等许多单词(都带有类似 'e' 的音),无法轻松地进行词干分析。对于外来借词,如 automaton,也可能存在问题。

词干分析最好的例外是最高级形式:

best -> good

eldest -> old

一个词形还原器会考虑这样的例外情况,但速度会较慢。您可以查看波特词干提取器规则,以了解您需要什么,或者您可以直接使用其SnowballC R软件包。


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

stemCompletion 是一个耗时的任务,有没有其他方法可以得到相同的单词?请有人帮忙。 - jay_phate

-1
当我需要做类似的事情时,我会在文本文件中写出我的单词列表,并将其提供给英语词典项目的Web查询工具,然后将结果解析回R。有点麻烦,但是ELP提供了大量好的数据。
对于您的用途,请查看ELP的MorphSP。对于happiness,它会给出{happy}→ness>。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接