Python NLTK莎士比亚语料库

Rom*_*n G 5 python nlp nltk

我正在尝试从莎士比亚的NLTK语料库中导入句子-在帮助网站之后-但是我在访问句子时遇到困难(以便训练word2vec模型):

from nltk.corpus import shakespeare #XMLCorpusreader
shakespeare.fileids()
['a_and_c.xml', 'dream.xml', 'hamlet.xml', 'j_caesar.xml', ...]

play = shakespeare.xml('dream.xml') #ElementTree object
print(play)
<Element 'PLAY' at ...>

for i in range(9):
    print('%s: %s' % (play[i].tag, play[i].text))
Run Code Online (Sandbox Code Playgroud)

返回以下内容:

TITLE: A Midsummer Night's Dream
PERSONAE: 

SCNDESCR: SCENE  Athens, and a wood near it.
PLAYSUBT: A MIDSUMMER NIGHT'S DREAM
ACT: None
ACT: None
ACT: None
ACT: None
ACT: None
Run Code Online (Sandbox Code Playgroud)

为什么所有行为都没有?

此处定义的方法(http://www.nltk.org/howto/corpus.html#data-access-methods)(.sents(),tag_sents(),chunked_sents(),parsed_sents())似乎都无效当应用于莎士比亚XMLCorpusReader时

我想了解:
1 /如何获得句子

2 /如何知道如何在ElementTree对象中寻找它们

Dav*_*ang 3

问题归结为如何从元素树的所有子元素中提取文本。这与 Python 元素树非常重复- 从元素中提取文本,剥离标签

尝试这个:

for p in play:
    print('%s: %s' % (p.tag, list(p.itertext())))
Run Code Online (Sandbox Code Playgroud)

在这里插入你想要做的逻辑