Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NLTK中用于情绪分析的德语词干_Python_Nltk_Sentiment Analysis_Stemming_Snowball - Fatal编程技术网

Python NLTK中用于情绪分析的德语词干

Python NLTK中用于情绪分析的德语词干,python,nltk,sentiment-analysis,stemming,snowball,Python,Nltk,Sentiment Analysis,Stemming,Snowball,我最近开始对德语文本进行情感分析项目,并计划使用词干分析器来改进结果 NLTK附带了一个德国雪球茎干分析器,我已经尝试过使用它,但我不确定结果如何。也许应该是这样,但作为一名计算机科学家而不是语言学家,我对词干不同的屈折动词形式存在问题 以单词“suchen”(to search)为例,第一人称单数词干为“such”,第三人称单数词干为“sucht” 我知道也有柠檬化,但据我所知,没有一个工作的德国柠檬化器集成到NLTK中。有GermaNet,但他们的NLTK集成似乎已经中止 切中要害:我希望屈

我最近开始对德语文本进行情感分析项目,并计划使用词干分析器来改进结果

NLTK附带了一个德国雪球茎干分析器,我已经尝试过使用它,但我不确定结果如何。也许应该是这样,但作为一名计算机科学家而不是语言学家,我对词干不同的屈折动词形式存在问题

以单词“suchen”(to search)为例,第一人称单数词干为“such”,第三人称单数词干为“sucht”

我知道也有柠檬化,但据我所知,没有一个工作的德国柠檬化器集成到NLTK中。有GermaNet,但他们的NLTK集成似乎已经中止

切中要害:我希望屈折动词形式的词干相同,至少对于同一时态中的常规动词是这样。如果这对我的目标不是一个有用的要求,请告诉我为什么。如果是的话,你知道有什么额外的资源可以帮助我实现这个目标吗


编辑:我忘了提到,任何软件都应该免费用于教育和研究目的。

作为一名计算机科学家,你在解决这一语言问题上的方向肯定是正确的;)。词干分析通常比较简单,用于信息检索任务,试图减少词库大小,但通常不足以进行更复杂的语言分析。引理化在一定程度上与词干化用例重叠,但包括重写例如动词词形变化的词根形式(引理),以及区分作为名词的“work”和作为动词的“work”(尽管这有点取决于引理化器的实现和质量)。为此,它通常需要更多的信息(如POS标记、语法树),因此需要相当长的时间,因此不太适合IR任务,通常需要处理大量数据

除了GermaNet(不知道它被中止了,但从未真正尝试过,因为它是免费的,但你必须签署协议才能访问它),还有SpaCy,你可以看看:

非常容易安装和使用。请参阅网站上的安装说明,然后使用以下工具下载德语资料:

python -m spacy download de
然后:


正如您所看到的,不幸的是,它在您的具体示例(suchen)中没有很好的表现,我也不确定数字代表什么(即必须是引理id,但不确定可以从中获得什么其他信息),但也许您可以尝试一下,看看它是否对您有帮助。

一个好的简单解决方案是使用TreeTagger。首先,您必须手动安装treetagge(这基本上就是在您的计算机上的某个位置解压正确的zip文件)。您将在此处找到二进制分布:

然后,您需要安装一个包装器来从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)
您还可以使用TreeTagger包装器的方法从Treetagges输出中生成漂亮的对象:

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

仅此而已

谢谢,等我回来的时候我一定会试试的。谢谢你的建议@伊戈尔,我试了你的第二个例子(“呃sucht ein Beispel”),它似乎给出了正确的结果:呃586452796134501405我成功了18313823129771624139 suchen ein 48734061937804855 ein Beispel 176351906757609250 Beispel这是金子!正是我一直在寻找的!
tags2 = treetaggerwrapper.make_tags(tags)
pprint.pprint(tags2)