簡體   English   中英

德語扼殺Python NLTK中的情感分析

[英]German Stemming for Sentiment Analysis in Python NLTK

我最近開始研究關於德語文本的情緒分析項目,我計划使用詞干分析器來改善結果。

NLTK配有德國Snowball Stemmer並且我已經嘗試過使用它,但我不確定結果。 也許它應該是這樣的,但作為一個計算機科學家,而不是一個語言學家,我有一個問題,變形動詞形式源於不同的詞干。

取“suchen”(搜索)這個詞,對於第一人稱單數而言應該是“這樣的”,而對於第三人稱單數則是“如此”。

我知道還有詞形還原,但據我所知,沒有可用的德語引理器集成到NLTK中。 有GermaNet,但他們的NLTK集成似乎已經中止。

重點:我想將變形動詞形式歸結為相同的詞干,至少對於同一時態內的常規動詞。 如果這對我的目標不是一個有用的要求,請告訴我原因。 如果是,您是否知道可以使用哪些其他資源來幫助我實現這一目標?

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

作為一名計算機科學家,您肯定正在尋找解決這一語言問題的正確方向;)。 詞干通常更加簡單化,並用於信息檢索任務以試圖減少詞典大小,但通常不足以進行更復雜的語言分析。 Lemmatisation部分地與詞干的用例重疊,但包括重寫例如動詞變形全部到相同的根形式(引理),並且還將“work”區分為名詞而將“work”區分為動詞(盡管這取決於一點lemmatiser的實施和質量)。 為此,它通常需要更多信息(如POS標簽,語法樹),因此需要相當長的時間,使其不太適合IR任務,通常處理大量數據。

除了GermaNet(不知道它已經中止,但從未真正嘗試過,因為它是免費的,但你必須簽署協議才能訪問它),有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)上沒有做得很好,而且我不確定數字代表什么(即必須是引理ID,但不確定可以獲得其他信息從這個),但也許你可以試一試,看看它是否對你有所幫助。

一個好的和簡單的解決方案是使用TreeTagger。 首先,您必須手動安裝treetagge(這基本上是在計算機上的某個位置拉開正確的zip文件)。 你會在這里找到二進制發行版: http//www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/

然后你需要安裝一個包裝器來從Python調用它。

下面的代碼安裝包裝器並將一個標記化的句子解釋:

import treetaggerwrapper

tagger = treetaggerwrapper.TreeTagger(TAGLANG='de')

tags = tagger.tag_text(tokenized_sent,tagonly=True) #don't use the TreeTagger's tokenization!

pprint.pprint(tags)

您還可以使用treetaggerwrapper中的方法從Treetagges輸出中創建漂亮的對象:

tags2 = treetaggerwrapper.make_tags(tags)
pprint.pprint(tags2)

就這些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM