我是编程和NLTK的新手,并且已经开始关注教科书。我无法使用正则表达式r'。*。pos'在Python 2.7(Mac)中工作。我正在阅读本书中的一组示例,即使用NLTK 2.0 Cookbook的Python文本处理,第3章。我认为代码的目的是找到所有名为pos的文件(或扩展名为“pos”的文件,我并不完全确定。< / p>
以下是代码:
reader = TaggedCorpusReader('/Users/mattmatters22/Desktop/pos',r'.*\.pos')
reader.words()
追踪(最近一次呼叫最后一次):
File "<pyshell#20>", line 1, in <module>
reader.words()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nltk/corpus/reader/tagged.py", line 82, in words
for (fileid, enc) in self.abspaths(fileids, True)])
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nltk/corpus/reader/util.py", line 421, in concat
raise ValueError('concat() expects at least one object!')
ValueError: concat() expects at least one object!
答案 0 :(得分:0)
r'.*\.pos'
表示将“.pos”与之前的某些内容匹配(.*
部分)。
但是在“/ Users / mattmatters22 / Desktop / pos”中找不到这个。这会导致你的问题吗?
尝试不使用点r'.*pos'
,看看是否收到相同的错误或结果。
答案 1 :(得分:0)
试试reader = TaggedCorpusReader('/Users/mattmatters22/Desktop/pos',['brown.pos'])
如果这不起作用,则brown.pos
不得在/Users/mattmatters22/Desktop/pos
答案 2 :(得分:0)
nltk书中的代码假定语料库名为brown.pos,情况并非如此并且做帮助(TaggedCorpusReader)并查看其init函数向我解释我需要提供两个参数 - 路径和文件名或者可以用来计算文件名的正则表达式。
我在我的linux系统上尝试了以下操作,但它确实有效。希望代码不言自明:
>>> import nltk
>>> nltk.corpus.brown.fileids()
[u'ca01', u'ca02', u'ca03' ..]
>>> nltk.corpus.brown.abspath('ca01')
FileSystemPathPointer(u'/home/<username>/nltk_data/corpora/brown/ca01')
>>> reader = TaggedCorpusReader('/home/<username>/nltk_data/corpora/brown/', 'ca01')
>>> reader.words()
[u'The', u'Fulton', u'County', u'Grand', u'Jury', ...]
在此之后,您可以替换自己的正则表达式,而不是使用显式文件名。