我有一个项目,我需要从一大堆文章中提取引文。在这里,引用我的意思是人们所说的事情,例如:Alen说“要提取的文本”。我正在使用NLTK来完成其他与NLP相关的任务,因此使用NLTK或任何类型的Python库的任何解决方案都非常有用。
谢谢
答案 0 :(得分:1)
正如Mayur所提到的,你可以做一个正则表达式来获取引号之间的所有内容
list = re.findall("\".*?\"", string)
您遇到的问题是,引号之间可能存在大量令人惊讶的事实,实际上并非引用。
如果你正在做学术文章,你可以在收尾报价后查找一个数字来获取脚注编号。还有非学术文章,也许你可以运行类似的东西:
"(said|writes|argues|concludes)(,)? \".?\""
可以更精确,但是有可能失去诸如blockquotes之类的引号(blockquotes会引起你的问题,因为它们可以在结束引号前包含换行符)
至于使用NLTK,我无法想到除了wordnet之外还有其他任何帮助,可以找到""的同义词。
答案 1 :(得分:0)
这符合模式,即您要查找的数据始终在引号""
之间。简而言之,您可以使用regex进行模式匹配。
我们举个例子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$ %$%"']
此处,.*?
匹配任何字符(换行符除外),并且模式字面匹配引号(开始\"
和结束\"
)。
请注意引号内的引号会破坏此代码。你不会得到预期的输出。