基于关键字从文本文件中提取句子的Python包

时间:2021-04-12 20:48:07

标签: python nlp

我需要一个可以根据提供的关键字从文本中获取相关句子的 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 日在新墨西哥州的三位一体试验中成功引爆"

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

3 个答案:

答案 0 :(得分:1)

我很确定存在一个可以为您执行此操作的模块,您可以尝试通过解析文本并创建以下单词来自己制作:[“出生日期”,“出生”,“出生日期”,等],您可以为多个字段执行此操作。这样您就可以找到可用的信息。

想法是:

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

你找到你要找的东西(例如出生日期)

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

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

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

答案 1 :(得分:1)

你可以使用fuzzywuzzy。

fuzz.ratio(search_text, sentence). 

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

https://github.com/seatgeek/fuzzywuzzy

答案 2 :(得分:0)

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

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

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

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

相关问题