【发布时间】:2016-10-08 03:09:38
【问题描述】:
NLTK http://www.nltk.org/ 是计算语言学的工具包。
我正在尝试使用sents() 方法来操纵句子:
from nltk.corpus import gutenberg
它通过fileid获取文本:
hamlet = gutenberg.sents('shakespeare-hamlet.txt')
输出是:
print hamlet
[['[', 'The', 'Tragedie', 'of', 'Hamlet', 'by', 'William', 'Shakespeare', '1599', ']'], ['Actus', 'Primus', '.'], ...]
但是假设我想按作者而不是按书制作句子列表。
以重复的方式(它不会让我extend() 列出):
shakespeare = []
hamlet = gutenberg.sents('shakespeare-hamlet.txt')
macbeth = gutenberg.sents('shakespeare-macbeth.txt')
caesar = gutenberg.sents('shakespeare-caesar.txt')
shakespeare.append(hamlet)
shakespeare.append(macbeth)
shakespeare.append(caesar)
但随后一切都变得嵌套:
print shakespeare
[[['[', 'The', 'Tragedie', 'of', 'Hamlet', 'by', 'William', 'Shakespeare', '1599', ']'], ['Actus', 'Primus', '.'], ...], [['[', 'The', 'Tragedie', 'of', 'Macbeth', 'by', 'William', 'Shakespeare', '1603', ']'], ['Actus', 'Primus', '.'], ...], [['[', 'The', 'Tragedie', 'of', 'Julius', 'Caesar', 'by', 'William', 'Shakespeare', '1599', ']'], ['Actus', 'Primus', '.'], ...]]
有没有办法让我得到一个包含所有连接句子的列表,而不是嵌套的,像这样?
['[', 'The', 'Tragedie', 'of', 'Hamlet', 'by', 'William', 'Shakespeare', '1599', ']'], ['Actus', 'Primus', '.'], ...], [['[', 'The', 'Tragedie', 'of', 'Macbeth', 'by', 'William', 'Shakespeare', '1603', ']'], ['Actus', 'Primus', '.'], ...], [['[', 'The', 'Tragedie', 'of', 'Julius', 'Caesar', 'by', 'William', 'Shakespeare', '1599', ']'], ['Actus', 'Primus', '.'], ...]]
【问题讨论】:
-
您在底部的示例不是有效列表。如果您提供有关您希望实现的目标的更多信息(和/或仔细检查您的示例),这将有所帮助。
-
@Daniel 你去吧,我已经编辑了底部的例子。谢谢你提醒我。上述示例的语法完全正确。
-
我很高兴 - 虽然,它仍然不完全存在(你写的例子抛出了
SyntaxError)。我想我明白了你想要什么:看起来你想要这个['[', 'The', 'Tragedie', 'of', 'Hamlet',作为第一个元素而不是这个[', 'The', 'Tragedie', 'of', 'Hamlet',,但这只是一个猜测。不过,刚刚看到您最近的编辑,这使它更加清晰 - 谢谢! -
你也有机会看看stackoverflow.com/questions/16176742/… 吗?
标签: python list nltk nested-lists