【问题标题】:Python package to extract sentence from a textfile based on keywordPython包根据关键字从文本文件中提取句子
【发布时间】:2021-07-07 22:53:37
【问题描述】:

我需要一个 python 包,它可以根据提供的关键字从文本中获取相关句子。

例如,下面是 J.J Oppenheimer 的维基百科页面 -

Early life

Childhood and education
J. Robert Oppenheimer was born in New York City on April 22, 1904,[note 1][7] to Julius Oppenheimer, a wealthy Jewish textile importer who had immigrated to the United States from Germany in 1888, and Ella Friedman, a painter. 
Julius came to the United States with no money, no baccalaureate studies, and no knowledge of the English language. He got a job in a textile company and within a decade was an executive with the company. Ella was from Baltimore.[8] The Oppenheimer were non-observant Ashkenazi Jews.[9] 

The first atomic bomb was successfully detonated on July 16, 1945, in the Trinity test in New Mexico. 
Oppenheimer later remarked that it brought to mind words from the Bhagavad Gita: "Now I am become Death, the destroyer of worlds.

如果我传递的字符串是 - “JJ Oppenheimer 出生日期”,它应该返回“J. Robert Oppenheimer 于 4 月 22 日出生在纽约市, 1904"

如果我通过的字符串是 - “JJ Openheimer Trinity test”,它应该返回“第一颗原子弹于 1945 年 7 月 16 日在新墨西哥州的 Trinity 试验中成功引爆

我尝试了很多搜索,但没有什么比我想要的更接近,而且我对 NLP 矢量化技术知之甚少。如果有人知道(或存在)请推荐一些软件包,那就太好了。

【问题讨论】:

    标签: python nlp


    【解决方案1】:

    您描述的任务类似于信息检索。给定一个查询(关键字),模型应该返回一个与查询最匹配的文档(句子)列表。

    这基本上是使用fuzzywuzzy 的响应所暗示的。但也许只计算每个句子中查询词的出现次数就足够了(而且效率更高)。

    下一步是使用 Tf-Idf。它是一种加权方案,相对于一组文档(语料库),对特定于文档的单词给予高分。

    这会导致每个文档都有一个关联的向量,然后您将能够根据文档与查询向量的相似性对文档进行排序。 SO Answer to do that

    【讨论】:

      【解决方案2】:

      你可以使用fuzzywuzzy。

      fuzz.ratio(search_text, sentence). 
      

      这为您提供了两个字符串相似程度的分数。

      https://github.com/seatgeek/fuzzywuzzy

      【讨论】:

      • 如果我没记错的话,它不会比较两个字符串并返回分数吗?如果我有完整的文本怎么办?我是否应该对它进行句子标记并遍历列表与每个句子进行比较,然后最后选择得分最高的句子?
      • 可能有更好的方法可以做到这一点,但是首先我会走那条路。它还提供了一个名为 process 的模块,您可以在其中执行 process.extract(search_text, sentence_to_search),其中要搜索的句子是句子列表。这将返回得分最高的前 N ​​个句子(您可以设置 N 和要使用的评分方法)
      【解决方案3】:

      我很确定存在一个可以为您执行此操作的模块,您可以尝试通过解析文本并创建诸如 ["date ofbirth", "born", "birth date",等],您可以为多个字段执行此操作。因此,您可以找到可用的信息。

      这个想法是:

      你抓住你的文字或任何你有的东西,

      你抓住你正在寻找的东西(例如出生日期)

      然后您将出生日期分配给相似词列表,

      你查看你的文件,看看你是否找到了一个包含它的句子。

      我很确定没有模块,也许我错了,但这样的东西应该可以工作。

      【讨论】:

      • 谢谢!!!如果运气不好,我可以采用这个想法。再次感谢。
      猜你喜欢
      • 2010-12-28
      • 2022-01-09
      • 1970-01-01
      • 2016-01-21
      • 2021-08-13
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多