0

伙计们,我已经为 NLTK 整理了一组语料库,它们基本上是简单的 XML 文件。我可以像这样加载它:

>>> from nltk.corpus import cicero
>>> print cicero.fileids()
['cicero_academica.xml', 'cicero_arati_phaenomena.xml', ...]

现在,我知道 XMLCorpusReader 不会一次给我所有这些 XML 文件的内容,因为它希望一次只处理一个 XML,对吗?我试图绕过它编写一个 for 循环,将它全部放在一个列表中并将其提供给 XMLCorpusReader 但没有运气......

简而言之:如何使用 NLTK 加载多个 XML 语料库并同时在所有语料库中运行 .words() ?工作代码示例会很好。

似乎我不能一次加载所有 XML 并使用它们,例如,使用类 Text() 来通过所有 XML 文件打印单词的索引,而不仅仅是一次通过一个。

是否有任何解决方法或真正的 NLTK 解决方案?我应该编写一个神奇的 XMLCorpusReader 继承类吗?我应该放弃 XML 并使用平面文件吗...?

这与我的问题类似,但到目前为止,我认为那里的答案在 NLTK 方面并没有真正有用:Can NLTK's XMLCorpusReader be used on a multi-file corpus?

4

1 回答 1

0

不完全是我所追求的,但它现在解决了这个问题。我会多玩一点,所以也许以后会有所不同。无论如何,一个小的工作测试:-)

# http://stackoverflow.com/questions/6849600/does-anyone-have-a-categorized-xml-corpus-reader-for-nltk
from CatXMLReader import CategorizedXMLCorpusReader

from nltk.corpus import cicero
from nltk import Text

fileids = cicero.abspaths()
reader = CategorizedXMLCorpusReader('/', fileids, cat_file='cats.txt')
words = Text(reader.words(fileids))
print words.concordance('et')
于 2012-04-17T02:23:56.007 回答