Ruby:在字符串数组中查找最常见的短语

标签 ruby algorithm data-binding full-text-search nlp

我希望能够在 Ruby 中的 300-500 个字符串数组中找到 10 个最常见的问题。

一个示例元素是

["HI, I'd like your product. I just have one question. How do I change my password?", "Can someone tell me how I change my password?", "I can't afford this. How do I cancel my account?", "Account cancelation?", "I forgot my password, how do I change my password?", .....]

基本上,我将有一个包含很多字符串的数组,我必须提取问题,并从该数组中找到 10 个最常见的问题。

我尝试环顾四周(查看了 n-gram,但似乎不太相关),但尚未提出任何想法。

你知道有什么算法可以建议我看一下吗?几个例子的链接就太棒了!

最佳答案

我想说第一步是实际确定哪些字符串(或子字符串)实际上是问题。一个简单的方法是寻找“?”,但根据你的要求,你可以增强它——也许寻找“疑问词”。这可能是您任务中更容易的部分。

一旦获得字符串列表(据说是问题),您需要对相似的字符串进行聚类并返回 10 个最大的 bin。最好的方法是结合基于语义+语法的方法。您可能可以看看 this paper因为他们似乎解决了寻找两个字符串之间相似性的问题。他们提出了一些令人信服的理由来说明为什么需要双重句法语义方法。

关于Ruby:在字符串数组中查找最常见的短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9615081/

相关文章:

Javascript "if statement"和嵌入式 ruby​​(ruby 变量始终为 true)

ruby - 记录到 rake 的跟踪日志

ruby-on-rails - 创建 Ruby On Rails 应用程序时出现 Webpacker 错误

wpf - 如何正确实现文本框验证

ruby - 有没有一种很好的方法来计算 ruby 中范围元素的总和

algorithm - 如何在 Solr 管理控制台中指定使用 STC 算法?

javascript - 遍历JavaScript中新引入的Map数据结构的时间复杂度是多少?

java - Knights Path 解决方案的 HashSet 和 LinkedHashSet 之间的行为差​​异

c# - 创建具有不同数据类型的集合并绑定(bind)到列表

android - 如何在 Android 自定义数据绑定(bind)中传递带参数的函数