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

基于关键字从文本文件中提取句子的Python包,python,nlp,Python,Nlp,我需要一个python包,它可以根据提供的关键字从文本中获取相关句子 例如,下面是J.J.奥本海默的维基百科页面- 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

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

例如,下面是J.J.奥本海默的维基百科页面-

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于1904年4月22日出生在纽约市

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


我尝试了很多次搜索,但都没有找到我想要的,我对NLP矢量化技术也不太了解。如果有人知道(或存在)请推荐一些软件包,那就太好了。

我很确定有一个模块可以为您完成这项工作,您可以尝试通过解析文本并创建诸如:[“出生日期”、“出生”、“出生日期”等词来自己完成,您可以对多个字段执行此操作。这样,您就可以找到可用的信息

这个想法是:

你抓起你的短信或任何你有的东西

你抓取你想要的东西(例如出生日期)

然后将出生日期指定给一组相似的单词

你翻阅你的档案,看看你是否找到了一个有这个意思的句子


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

我很确定有一个模块可以为您完成这项工作,您可以尝试通过解析文本并创建诸如:[“出生日期”、“出生”、“出生日期”等词来自己完成,您可以为多个字段执行此操作。这样,您就可以找到可用的信息

这个想法是:

你抓起你的短信或任何你有的东西

你抓取你想要的东西(例如出生日期)

然后将出生日期指定给一组相似的单词

你翻阅你的档案,看看你是否找到了一个有这个意思的句子


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

你可以使用fuzzywuzzy

fuzz.ratio(search_text, sentence). 
这将为两个字符串的相似程度提供分数


您可以使用fuzzyfuzzy

fuzz.ratio(search_text, sentence). 
这将为两个字符串的相似程度提供分数


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

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

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


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

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

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

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


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

谢谢!!!如果运气不好,我可以接受这个想法。再次感谢。谢谢!!!如果运气不好,我可以接受这个想法。再次感谢。如果我没有错,它会比较两个字符串并返回分数吗?如果我有完整的文本怎么办?我是否应该将句子标记化,然后在列表中循环,与每个句子进行比较,最后选择得分最高的句子?可能有更好的方法,但首先我会选择这条路线。它还提供了一个名为process.extract的模块,您可以在其中执行process.extract(搜索文本、句子搜索),其中sentecestosearch是一个句子列表。这将返回得分最高的前N个句子(您可以设置N和要使用的评分方法),如果我没有错,它会比较两个字符串并返回分数吗?如果我有完整的文本怎么办?我是否应该将句子标记化,然后在列表中循环,与每个句子进行比较,最后选择得分最高的句子?可能有更好的方法,但首先我会选择这条路线。它还提供了一个名为process.extract的模块,您可以在其中执行process.extract(搜索文本、句子搜索),其中sentecestosearch是一个句子列表。这将返回得分最高的前N个句子(您可以设置N和要使用的评分方法)