2017-02-05 37 views
1

我使用NLTK和TextBlob找到一個文本名詞和名詞短語:的Python:NLTK和TextBlob在法國

from textblob import TextBlob 
import nltk 

blob = TextBlob(text) 
print(blob.noun_phrases) 
tokenized = nltk.word_tokenize(text) 
nouns = [word for (word, pos) in nltk.pos_tag(tokenized) if is_noun(pos)] 
print(nouns) 

這工作得很好,如果我的文字是英文的,但它不是好了,如果我文本是法文的。

我無法找到如何修改法語語言的代碼,我該怎麼做?

是否有一個列表可以解析所有語言的地方?

+0

您有兩個單獨的代碼片段。一個使用'TextBlob'(第1行和第2行)。另一個使用'nltk'(3-5行)。哪一個不起作用? – DyZ

+0

@DYZ都可以使用英文文本,但兩者都不能使用法文文本。使用法語文本Textblob會報告名詞短語並非真正的短語,並且nltk會報告不是名詞的單詞 – Sulli

回答

1

我建議你在這篇文章中可以解決您的問題:http://blog.fouadhamdi.com/introduction-a-nltk/

+2

_鼓勵與外部資源的鏈接,但請在鏈接的周圍添加上下文,以便您的同行用戶瞭解它是什麼以及爲什麼在那。如果目標網站無法訪問或永久離線,請務必引用重要鏈接中最相關的部分._ – Bugs

3

默認NLTK使用英文標記生成器,這將有奇怪的或不確定的行爲爲法語。

@fpierron是正確的。如果您閱讀它提到的文章,您只需加載正確的標記語言模型並在程序中使用它。

import nltk.data 
# chargement du tokenizer 
tokenizer = nltk.data.load('tokenizers/punkt/PY3/french.pickle') 
tokens = tokenizer.tokenize("Jadis, une nuit, je fus un papillon, voltigeant, content de son sort. Puis, je m’éveillai, étant Tchouang-tseu. Qui suis-je en réalité ? Un papillon qui rêve qu’il est Tchouang-tseu ou Tchouang qui s’imagine qu’il fut papillon ?") 

print(tokens) 

['Le', 'courage', 'de', 'la', 'goutte', 'd', "'", 'eau', ',', 'c', "'", 'est', 'qu', "'", 'elle', 'ose', 'tomber', 'dans', 'le', 'désert', '.'] 

如果你沒有,你可以使用正確的文件「nltk.download()」以下載正確的模型法語。

如果你看看tokenizer上的NLTKs網站,還有一些其他的例子。 http://www.nltk.org/api/nltk.tokenize.html