短语解析和趋势

时间:2013-03-11 15:15:03

标签: php javascript mysql regex

所以我处于工作项目(软件支持)的'设计'阶段,并希望在我进入森林之前收集社区的意见,想法等。最终,我正在构建一个与Twitter的趋势页面非常相似的网页。以下是我将如何使用它的高级概述:

我们的支持代表将在客户打电话时创建门票,门票的文本实时捕获并发送到另一台服务器,我称之为“Hoss”。一旦Hoss收到数据,我们就开始解析文本了。这里的主要兴趣是textarea,支持代表在客户所拥有的问题的简短摘要中输入。我想获取这些信息,对其进行解析并将其显示在列出“趋势”主题的网页上,以便管理人员能够实时了解客户的电话信息。

现在有趣的东西,我希望得到一些方向......对于这个例子。让我们说摘要textarea包含以下内容:

  

“客户在尝试安装更新时出错,”错误   在update.exe“

现在Hoss服务器有了这个文本,它可以开始解析它。我有兴趣捕获趋势Feed的关键字。在此示例中,“error”,“install”,“update.exe”。但是,捕获/跟踪一起显示的关键字也很重要。意思是,我可以很容易地捕获“错误”和“安装”,并基本上计算这些单词在任何给定时间内出现的次数,但它们不会单独给出那么多的洞察力。

同样,我正处于这个项目的早期阶段,这就是为什么我没有附加代码示例等等。此时没有任何限制!先感谢您!在花了很多时间阅读帖子之后,我已经了解了这个社区的力量,这是一个非常宝贵的资源!

3 个答案:

答案 0 :(得分:1)

这进入了自然语言处理,这本身就是一个很大的研究领域。

有些想法会让你朝着正确的方向前进。

  1. 定义停止列表。这些话会被忽略。它们应该包含没有意义的词语(is,of,a,when)。以及没有什么意义的词语,因为它们很可能出现在很多门票(客户)中。

  2. 定义同义词,意思相同的不同词。在对字符串进行标记时,您可以使用根词替换匹配的单词以减少差异。

  3. 1-3个关键字词组中的索引关键字。然后总结并记录这些事件。

  4. 这可能会随着更多数据的推出而不断调整。

答案 1 :(得分:0)

我建议去Carrot2(http://project.carrot2.org/)等集群服务器,然后将票证内容或主题作为文件传递。您可以选择要使用的算法。群集启动后,您可以通过群集计数获得趋势主题。 Carrot2是java,但是有一些有用的php示例(用于发送文档和检索结果和计数),可以使用您可以试验的代码。它还有一个REST api,你可以使用php curl或guzzle(使卷曲更少)。

答案 2 :(得分:0)

我建议您构建一系列您想要注意的常用短语,每次向Hoss发送Feed时,在解析过程中,在Feed上执行preg_match()或计算数字您的短语出现并存储在数据库中的时间。

假设您有一个十字的数组,您正在关注$support_words=array('word1','word2','word3', ...'wordn');,计算数组项的数量并执行循环以检查计数。例如。 foreach($support_words as $words){$count = substr_count($feed_from_customer_reps, $word); // insert the word and count into the database here. or better still fetch word if exists from database, get the current count and add the new count to it. // }

这是一个未经测试的代码实际上它更像是一个实际程序代码的伪代码。我希望你能得到逻辑......如果你不清楚,请告诉我。

资源:php substr_count manual