如何使用NLTK从文本中提取报价
这个问题在这里已经有了答案:
正如Mayur所说的,你可以通过一个正则表达式来提取引号之间的所有内容
list = re.findall("".*?"", string)
你会遇到的问题是,实际上不是引号的引号之间会有惊人的大量内容。
如果您正在学术文章,您可以在收盘后查找一个数字来选择脚注编号。 除非有学术文章,也许你可以运行如下的东西:
"(said|writes|argues|concludes)(,)? ".?""
可以更精确,但是会失去引号的风险,比如blockquotes(blockquotes会引起你的问题,因为它们可以在结束引号之前包含换行符)
至于使用NLTK,我不能想到除了可能用wordnet找到“说”的同义词外,其他任何东西都会有很多帮助。
这符合一种模式,即您正在查找的数据总是在引号""
之间。 简而言之,您可以使用正则表达式进行模式匹配。 让我们以这个例子she said " DAS A SDASD sdasdasd SADSD", " SA23 DSD " ASDAS "ASDAS1 3123$ %$%"
适用于您的基本示例的正则表达式是 -
list = re.findall("".*?"", string)
List
给我们['" DAS A SDASD SADASD SADSD"', '" SA23 DSD "', '"ASDAS1 3123$ %$%"']
在这里, .*?
匹配任何字符(除了换行符),并且模式字面上匹配引号(开始“ "
和结尾"
)。
请注意,引号内的引号会破坏此代码。 你不会得到预期的输出。
链接地址: http://www.djcxy.com/p/65163.html