2011-07-12 76 views
12

在R中使用NLP詞法分析中,有什麼方法可以獲得基詞而不是詞根?在R中使用基本詞詞根而不是根詞幹

代碼:

> #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 

> 

我能基數詞來代替 「本刊」 「快樂」(基地字)(字根)的 「當幸福來敲門人們高興happys」 使用R.

+0

不確定關於R具體,但一般來說你需要一個形態學分析器,例如你可以得到這個操作系統之一:http://seman.svn.sourceforge.net/viewvc/seman/trunk/Docs/Morph_UNIX.txt ?revision = 124&view = markup –

+0

很可能你對莖不感興趣,你想要的是一個lemmatizer。嗯,如果你需要,我可以與你分享我自己的英文開放式詞典。但它是用python編寫的... – alvas

回答

2

你可能正在尋找一個詞幹。 這裏有一些詞幹從CRAN Task View: Natural Language Processing

  • RWeka是Weka的一個接口,它是機器學習算法用Java編寫的數據挖掘任務的集合。在自然語言處理的環境中特別有用的是它的標記化和詞幹化的功能。

  • Snowball提供了包含Porter莖幹和其他幾種莖幹針對不同語言的Snowball莖幹。有關詳細信息,請參閱雪球網頁。

  • Rstem是Porter的詞幹提取算法的C版本的替代接口。

-1

當我需要做同樣的事情,我寫了我的一個文本文件中的單詞的列表,並將其送入英語詞彙項目的網絡查詢工具,然後解析結果回R.有點麻煩,但ELP提供了大量的良好數據。 供您使用,請查看ELP的MorphSP。對於幸福,它給{}快樂>尼斯>

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

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 
+0

stemCompletion是耗時的任務,有沒有別的辦法可以得到相同的單詞?請有人幫忙。 –

1

沒有良好的英語形態學知識,您將不得不使用現有的庫,而不是創建自己的詞幹。

英語充滿了意想不到的形態意外,這會影響概率模型和基於規則的模型。一些實例是:

  • 卸下IN-前綴移除-able後綴時,如在可居住
  • 單詞分類的變化,如名詞自行車因動詞騎自行車(可影響基於類別的規則)而產生。
  • 帶負面意義的單詞不能帶負面前綴(您可以有不好意思,但不可以不高興)。
  • 作爲複合詞的兩個詞,如「卡車司機」(當你乾的時候你會把它們當作一個詞)。

英語還有一個I-變音詞的問題,那裏的單詞如男人,鵝,腳,最好,以及其他一些單詞(都帶有'e'-like聲音)不能容易地被阻止。詞幹外國藉詞,如自動機,也可能是一個問題。

詞幹的最高級形式是例外的一個很好的例子:

最好 - >好

長子 - >老

一個lemmatizer將佔這樣的例外,但是會比較慢。你可以看看Porter的stemmer規則來了解你需要什麼,或者你可以使用它的SnowballC R軟件包。