2017-06-05 5 views
0

Quran Holy Bookの言葉を類義語化しようとしましたが、一部の言葉では類義語は使用できません。なぜNLTK Lemmatizerは複数の単語を部分文字化できないのですか?

sentence = "Then bring ten surahs like it that have been invented and call upon for assistance whomever you can besides Allah if you should be truthful" 

その文は私のTXTデータセットの一部です:

は、ここに私の文章です。 ご覧のとおり、「スラ」は複数形の「スラ」です。 私が試した私のコード:私は実行して、印刷

def lemmatize(self, ayat): 
    wordnet_lemmatizer = WordNetLemmatizer() 
    result = [] 

    for i in xrange (len(ayat)): 
     result.append(wordnet_lemmatizer.lemmatize(sentence[i],'v')) 
    return result 

は、結果はこのようなものです:

['bring', 'ten', 'surahs', 'like', u'invent', 'call', 'upon', 'assistance', 'whomever', 'besides', 'Allah', 'truthful'] 

「surahsが」「surah」に変更されていません。

誰でも知ることができますか?ありがとう。

+0

ありwordnetlemmatizer自体には何もありませんが、それだけで十分不規則な言葉を扱うことができません。あなたはこの 'ハック'を試すことができます - https://stackoverflow.com/questions/22333392/stemming-some-plurals-with-wordnet-lemmatizer-doesnt-work –

+0

私はそのハックを試みましたが、何も返しません – sang

答えて

1

ほとんどの非標準の英語の単語については

を参照してください、WordNetのLemmatizerが正しい補題を得ることに多くを支援するつもりはないが、ステマーを試してみてください。

>>> from nltk.stem import PorterStemmer 
>>> porter = PorterStemmer() 
>>> porter.stem('surahs') 
u'surah' 

また、lemmatize_sentearthy中(nltkラッパー、「恥知らずプラグ」)を試してみてください。

>>> from earthy.nltk_wrappers import lemmatize_sent 
>>> sentence = "Then bring ten surahs like it that have been invented and call upon for assistance whomever you can besides Allah if you should be truthful" 
>>> lemmatize_sent(sentence) 
[('Then', 'Then', 'RB'), ('bring', 'bring', 'VBG'), ('ten', 'ten', 'RP'), ('surahs', 'surahs', 'NNS'), ('like', 'like', 'IN'), ('it', 'it', 'PRP'), ('that', 'that', 'WDT'), ('have', 'have', 'VBP'), ('been', u'be', 'VBN'), ('invented', u'invent', 'VBN'), ('and', 'and', 'CC'), ('call', 'call', 'VB'), ('upon', 'upon', 'NN'), ('for', 'for', 'IN'), ('assistance', 'assistance', 'NN'), ('whomever', 'whomever', 'NN'), ('you', 'you', 'PRP'), ('can', 'can', 'MD'), ('besides', 'besides', 'VB'), ('Allah', 'Allah', 'NNP'), ('if', 'if', 'IN'), ('you', 'you', 'PRP'), ('should', 'should', 'MD'), ('be', 'be', 'VB'), ('truthful', 'truthful', 'JJ')] 

>>> words, lemmas, tags = zip(*lemmatize_sent(sentence)) 
>>> lemmas 
('Then', 'bring', 'ten', 'surahs', 'like', 'it', 'that', 'have', u'be', u'invent', 'and', 'call', 'upon', 'for', 'assistance', 'whomever', 'you', 'can', 'besides', 'Allah', 'if', 'you', 'should', 'be', 'truthful') 

>>> from earthy.nltk_wrappers import pywsd_lemmatize 
>>> pywsd_lemmatize('surahs') 
'surahs' 

>>> from earthy.nltk_wrappers import porter_stem 
>>> porter_stem('surahs') 
u'surah' 
+0

うわー、ありがとう。これはカッコいい。 「土俗的な」モジュールとは何ですか?どこで入手できますか?私は "土俗的"を呼び出すことはできません、モジュールの名前は未定義です。 – sang

+0

'pip install -U earthy' – alvas

+0

うわー、ありがとう、私はインストールしました。土曜日の図書館のための本やチュートリアルはありますか? – sang

関連する問題