首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从大型文本语料库中的给定术语列表中找到最相似的术语。

从大型文本语料库中的给定术语列表中找到最相似的术语。
EN

Stack Overflow用户
提问于 2021-10-30 19:06:21
回答 2查看 585关注 0票数 0

我有两百万的播客名单。此外,我有一个巨大的文本语料库从一个子-Reddit(帖子,评论,线程等)我们列表中的播客经常被用户提及。我想要解决的任务是,我必须用我们的语料库中的每个名字来计算提到的次数。换句话说,生成(name: count)对的字典。

这里的挑战是,这些Podcast的大多数名字都有几个字长,例如:“犹他州正午新闻”;“国会听到技术政策辩论”等等。然而,Reddit用户所提到的通常是原始名称的一个粗略的子串,例如:“犹他州正午/犹他州新”或“国会技术辩论/国会听到技术”。这使得从列表中识别姓名相当困难。

我尝试过的:首先,我处理并连接原始播客名称中的所有单词为一个单词。例如,“国会听取技术政策辩论”( "Congresshearstechpolicydebates" ) ->

当我遍历subreddit语料库时,每当我找到一个命名的实体或潜在的播客名称时,我就像这样处理它的单词,

"congresshearstech" (假设这是我在语料库中发现的) -> ->

我将这个“国会议员”字符串与播客列表中所有处理过的名称进行了比较。我使用计算单词拼写相似性的分数来进行这个比较。我使用difflib Python库完成了这个任务。此外,也有相似的分数,如Leveshtein和Hamming距离。最后,我给播客的名字取了我们找到的字符串的最大相似性分数。

我的问题是:的问题是,上面的策略实际上是准确地工作。然而,这对整个语料库来说太慢了。而且,我的名单太长了。有谁能建议一种更快的算法/数据结构来比较这么大的语料库上这么多的名字?这里有任何基于深度学习的方法吗?就像在那里我可以训练一个关于200万播客名字的LSTM。因此,每当遇到一个可能的名称时,这个经过训练的模型就可以从我们的列表中输出任何Podcast的最接近的拼写?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-30 22:33:21

您可以使用类似tf-以色列国防军和余弦相似的东西来解决这个问题。我不熟悉使用机器学习的任何方法,这在这里是有帮助的。

这篇文章给出了更详细的过程描述和指向一些有用库的链接。你也应该读本文描述了一个与您的项目有点类似的项目,并包含了关于提高性能的信息。我将在这里描述我所理解的方法。

tf-以色列国防军是一个缩写词,意思是“词频逆文档频率”。本质上,您查看文本的子集,并找到子集中术语的频率相对于整个文本语料库中这些术语的频率。在您的子集和整个语料库中常见的术语将具有较低的值,而在您的子集中常见但在语料库中很少的术语将具有较高的值。

如果您可以为“文档”(或文本的子集)计算tf,则可以将文本的子集转换为tf值的向量。一旦你有了这个向量,你就可以用它来计算文本子集和其他子集的余弦相似性。比方说,找出你所有标题的编辑摘录的相似性。(有一种方法来管理这个问题,所以您不会连续地检查每一个编辑节选的字面意义上的每一个标题- 见这篇文章)。

一旦您能够做到这一点,那么我认为解决方案是选择一些值n,并在每次对标题进行tf-以色列国防军/余弦相似性扫描时,扫描编辑发布的n个单词,并在余弦-相似度高于某个值时标记匹配(您需要对此进行实验,以找到给您带来好结果的内容)。然后,减少n并重复,直到n为0。

票数 1
EN

Stack Overflow用户

发布于 2021-10-30 19:34:40

如果精确的文本匹配(不管是否删除空白预处理)就足够了,那么考虑一下Aho字符串匹配算法,用于检测文本体(即subreddit内容)中的子字符串匹配(即podcast名称)。这个算法有很多用于python的实现,但是黑皮有一个很好的自述,它总结了如何在dataset上使用它。

如果需要进行模糊匹配(当提到的podcast名称文本并不完全匹配时也进行匹配),那么如果每个查询文档操作提供足够的性能,则考虑像毛绒这样的模糊字符串匹配库。另一种方法是从子字符串中预先计算n克,并像模糊集包那样在每个文档的所有n克中累积支持计数。

如果有关podcast的其他信息可以在知识库中获得(即不仅仅是已知名称),那么问题更像是实体链接的一般NLP任务,而更像是自定义知识库(即播客列表)。这是一个积极研究的领域,对NLP进展这里的最新研究方法进行了探讨。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69781324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档