如何使用NLTK从文本中提取报价

这个问题在这里已经有了答案:

  • RegEx:在引号之间抓取19个答案

  • 正如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

    上一篇: How to extract quotations from text using NLTK

    下一篇: How to get rid of punctuation using NLTK tokenizer?