gpt4 book ai didi

Python NLTK 练习 : chapter 5

转载 作者:行者123 更新时间:2023-12-01 05:45:22 34 4
gpt4 key购买 nike

大家好,我开始按照 NLTK 团队的官方书籍学习 NLTK。

我正在阅读第 5 章“标记”,但我无法解决 PDF 版本第 186 页的练习之一:

给定 cfd2['VN'].keys() 指定的过去分词列表,尝试收集紧邻该列表中的项目之前的所有单词标签对的列表。

我尝试过这种方法:

wsj = nltk.corpus.treebank.tagged_words(simplify_tags=True)

[wsj[wsj.index((word,tag))-1:wsj.index((word,tag))+1] for (word,tag) in wsj if word in cfd2['VN'].keys()]

但它给了我这个错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/reader/util.py", line 401, in iterate_from
for tok in piece.iterate_from(max(0, start_tok-offset)):
File "/usr/local/lib/python2.7/dist-packages/nltk/corpus/reader/util.py", line 295, in iterate_from
self._stream.seek(filepos)
AttributeError: 'NoneType' object has no attribute 'seek'

我认为我在访问 wsj 结构时做错了什么,但我不知道出了什么问题!

你能帮我吗?

提前致谢!

最佳答案

wsj 的类型为 nltk.corpus.reader.util.ConcatenatedCorpusView,其行为类似于列表(这就是为什么您可以使用 index() 等函数),但是“在幕后”NLTK 永远不会将整个列表读入内存,它只会从文件对象中读取它需要的那些部分。看起来,如果您迭代 CorpusView 对象并同时使用 index() (这需要再次迭代),则文件对象将返回 None

这种方式可以工作,尽管它不如列表理解优雅:

  for i in range(len(wsj)):
if wsj[i][0] in cfd2['VN'].keys():
print wsj[(i-1):(i+1)]

关于Python NLTK 练习 : chapter 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16300067/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com