我希望能够在 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/