2017-06-13 97 views
0

我最近開始研究德語文本中的情感分析項目,並計劃使用詞法分析器來改進結果。德語中的Python情感分析NLTK

NLTK附帶德國雪球乾燥器,我已經試過使用它,但我不確定結果。也許它應該是這樣,但作爲一個計算機科學家而不是語言學家,我有一個問題與屈曲動詞形式源於不同的詞幹。

取「suchen」(搜索)這個詞,它被認爲是第一人稱單數的「such」,而第三人稱單數是「sucht」。

我知道也有詞形化,但據我所知,沒有工作的德語lemmatizer被整合到NLTK中。有GermaNet,但他們的NLTK集成似乎已被中止。

到達這一點:我希望折中的動詞形式被歸爲同一詞幹,至少對於同一時期內的常規動詞。如果這不是我的目標有用的要求,請告訴我爲什麼。如果是這樣,你知道有哪些額外的資源可以幫助我實現這個目標嗎?

編輯:我忘了提及,任何軟件都應該可以免費用於教育和研究目的。

回答

2

作爲一名計算機科學家,您肯定正在尋找正確的方向來解決這個語言問題;)。詞幹通常比較簡單,用於信息檢索任務,試圖減少詞典的大小,但通常不足以用於更復雜的語言分析。 Lemmatisation部分與用於詞幹的用例重疊,但包括將動詞變形全部重寫爲相同的根形式(引理),並且還將「工作」區分爲名詞和「工作」作爲動詞(儘管這取決於一點lemmatiser的實施和質量)。爲此,它通常需要更多信息(如POS標籤,語法樹),因此需要更長的時間,使其不適合IR任務,通常處理大量數據。除了GermaNet(不知道它被中止了,但從未真正嘗試過它,因爲它是免費的,但你必須簽署協議才能訪問它),還有SpaCy,你可以擁有一個SpaCy看看:https://spacy.io/docs/usage/

非常容易安裝和使用。看到網站上的安裝說明,然後使用下載德國的東西:

python -m spacy download de 

則:

>>> import spacy 
>>> nlp = spacy.load('de') 
>>> doc = nlp('Wir suchen ein Beispiel') 
>>> for token in doc: 
...  print(token, token.lemma, token.lemma_) 
... 
Wir 521 wir 
suchen 1162 suchen 
ein 486 ein 
Beispiel 809 Beispiel 
>>> doc = nlp('Er sucht ein Beispiel') 
>>> for token in doc: 
...  print(token, token.lemma, token.lemma_) 
... 
Er 513 er 
sucht 1901 sucht 
ein 486 ein 
Beispiel 809 Beispiel 

正如你所看到的,遺憾的是它並沒有你的具體例子做了很好的工作( suchen),我不確定數字代表什麼(即必須是引理編號,但不確定可以從中得到什麼其他信息),但也許你可以試一試,看看它是否對你有幫助。

+0

謝謝,我一定會試一試,當我回到它。 – Florian