如何解决使用 Python、NLTK 分析德语文本
我是 Python 的初学者,目前正在尝试使用 NLTK 来分析德语文本(提取德语名词及其德语文本的频率),请参考本教程:https://datascience.blog.wzb.eu/2016/07/13/accurate-part-of-speech-tagging-of-german-texts-with-nltk/
在此过程中我遇到了几个问题,但我无法解决。
当我按照网站执行以下代码时:
import random
tagged_sents = list(corp.tagged_sents())
random.shuffle(tagged_sents)
split_perc = 0.1
split_size = int(len(tagged_sents) * split_perc)
train_sents,test_sents = tagged_sents[split_size:],tagged_sents[:split_size]
它出来了
Traceback (most recent call last):
File "test2.py",line 7,in <module>
tagged_sents = list(corp.tagged_sents())
File "C:\Users\User\anaconda3\lib\site-packages\nltk\corpus\reader\conll.py",line 130,in tagged_sents
return LazyMap(get_tagged_words,self._grids(fileids))
File "C:\Users\User\anaconda3\lib\site-packages\nltk\corpus\reader\conll.py",line 215,in _grids
return concat(
File "C:\Users\User\anaconda3\lib\site-packages\nltk\corpus\reader\util.py",line 433,in concat
raise ValueError("concat() expects at least one object!")
ValueError: concat() expects at least one object!
然后我尝试按照此解决方案进行修复 https://teamtreehouse.com/community/randomshuffle-crashes-when-passed-a-range-somenums-randomshufflerange5250
并改变
tagged_sents = list(corp.tagged_sents())
到
tagged_sents = list(range(5,250))
而且 ValueError 没有出来,我不知道 (5,250) 是什么意思,虽然我已经阅读了说明。
那我继续执行下面的步骤
from ClassifierBasedGermanTagger.ClassifierBasedGermanTagger import ClassifierBasedGermanTagger
tagger = ClassifierBasedGermanTagger(train=train_sents)
然后显示
Traceback (most recent call last):
File "test1.py",line 90,in <module>
from ClassifierBasedGermanTagger.ClassifierBasedGermanTagger import ClassifierBasedGermanTagger
ModuleNotFoundError: No module named 'ClassifierBasedGermanTagger'
我已经下载了ClassifierBasedGermanTagger.py和init.py并将它们放在链接到VS CODE的文件夹中,不知道是否正确,如文中所说:>
'使用他的 Python 类 ClassifierBasedGermanTagger(您可以从 github 页面下载),我们可以创建一个标记器并使用来自 TIGER 语料库的数据对其进行训练:'
请帮我解决这些问题,谢谢!
解决方法
首先,欢迎来到 StackOverflow!在发布问题之前,请确保您已经完成了自己的研究,并且大部分时间都可以解决问题。
其次,import pandas as pd
import patsy as pt
import numpy as np
df = pd.DataFrame({
'y':[0,1,1],'x':np.arange(0,8,2),'k': [1,2,2]
})
print(df.dtypes)
pt.dmatrices(
'y ~ x + (1+x|k)',data=df
)
是 Python 中一个非常基本的函数,用于根据输入获取数字列表,我认为像您那样使用它不会解决问题。我建议您使用 range(start,end)
来查看 print
中填充的数据类型,然后从那里开始调试。也许 corp
只是空的,这就是为什么你没有得到任何 corp
。
对于导入部分,我不清楚您将 tagged_sents
放在哪里,但无论它在哪里,您的代码都看不到它。您可以尝试将您的代码 (ClassifierBasedGermanTagger.py
) 和 test2.py
放在同一目录中。有关如何在 Python 中正确导入模块的更多详细信息,请阅读以下链接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。