【发布时间】:2021-12-15 06:19:20
【问题描述】:
我有一个 200 万长的播客名称列表。此外,我从一个子 Reddit(帖子、cmets、线程等)中抓取了一个巨大的文本语料库,其中用户经常提到我们列表中的播客。我要解决的任务是,我必须计算我们语料库中每个名字的提及次数。换句话说,生成 (name: count) 对的字典。
这里的挑战是这些 Podcast 名称中的大多数都是几个单词,例如:“Utah's Noon News”; “Congress Hears Tech Policy Debates”等。然而,Reddit 用户提及的内容通常是原始名称的粗略子字符串,例如:“Utah Noon/Utah New”或“Congress Tech Debates/Congress Hears Tech”。这使得从列表中识别名称变得非常困难。
我的尝试: 首先,我将原始播客名称中的所有单词处理并连接成一个单词。例如, “国会聆听技术政策辩论”->“国会聆听技术政策辩论”
当我遍历 subreddit 语料库时,每当我发现一个命名实体或潜在的播客名称时,我都会像这样处理它的词,
“Congress Hears Tech”(假设这是我在语料库中找到)-> “congresshearstech”
我将此“congresshearstech”字符串与播客列表中所有已处理的名称进行了比较。我使用根据单词拼写相似度计算的得分进行比较。我使用 difflib Python 库做到了这一点。此外,还有 Leveshtein 和 Hamming Distance 等相似度得分。最终,我奖励了与我们的语料库找到的字符串相似度最高的播客名称。
我的问题: 问题是,上述策略实际上是有效的。但是,对于整个语料库来说,这样做太慢了。另外,我的名单太长了。谁能建议一个更快的算法/数据结构来比较如此庞大的语料库中的这么多名字?这里有任何基于深度学习的方法吗?比如我可以在 200 万个 Podcast 名称上训练 LSTM。那么,只要遇到可能的名称,这个经过训练的模型就可以从我们的列表中输出最接近任何 Podcast 的拼写?
【问题讨论】:
-
我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 stackoverflow.com/tags/machine-learning/info 中的介绍和注意事项跨度>
标签: machine-learning deep-learning nlp string-matching