我们正在构建一个服务台应用程序来运行我们的服务公司,我正在努力帮助呼叫中心人员根据客户的问题描述分配类别。
我的主要想法是将客户提供的描述与之前的描述进行比较,并根据分配的最常见类别使用先前服务调用中使用的类别。
任何想法怎么做?
我的描述字段是一个blob字段,因为一些描述很长。我宁愿找到一种方法来做到这一点,需要最少的系统资源。
感谢您的任何意见:)
麦克
答案 0 :(得分:0)
我是自定义代码的人;如果你使用大而膨胀的系统,我觉得这项工作没有做好,所以如果你不想自己编写代码,那么就把它拿出来。但是,这可能不像你做的那么难;是的,我肯定会使用标记系统。但是,它不一定非常复杂。
以下是我将如何处理它:
首先,创建一个包含3个表的数据库;一个用于类别,标签和“链接”(类别和标签之间的链接)。
然后,创建一个初始化数组的PHP函数(空工作正常)并推送新的(小写的)单词(如果它们不存在)。这方面的一个例子可能是:
<?php
// Pass the new description to this
// function.
function getCategory($description)
{
// Lowercase it all
$description = strtolower($description);
// Kill extra whitespace
$description = trim($description);
$description = preg_replace('~\s\s+~', ' ', $description);
// Kill anything that isn't a number or a letter
// NOTE: This is untested, so just edit this however you'd like to make it work. The
// idea is to just eliminate everything that isn't a letter or number. Just don't take out
// spaces; we need them!
$descripton = trim($description, "!@#$%^&*()_+-=[]{};:'\"\\\n\r|<>?,./");
// Now the description should just contain words with a single space in between them.
// Let's break them up.
$dict = explode(" ", $description);
// And find the unique ones...
$dict = array_unique($dict, SORT_STRING);
// If you wanted to, you could trim either common words you specify,
// or any words under, say, 4 characters. Up to you!
return $dict;
}
?>
接下来,按您的需要填充数据库;制作一些类别和一些标签,然后将它们链接在一起(如果你想获得想象力,将MySQL引擎切换到InnoDB并建立关系。让事情变得更快!)
Table `Categories`
|-------------------------|
| Column: Category |
| Rows: |
| Food |
| Animals |
| Plants |
| |
|-------------------------|
Table `Tags`
|-------------------------|
| Column: Tag |
| Rows: |
| eat |
| hamburger |
| meat |
| leaf |
| stem |
| seed |
| fur |
| hair |
| claws |
| |
|-------------------------|
Table `Links`
|-------------------------|
| Columns: tag, category |
| Rows: |
| eat, Food |
| hamburger, Food |
| meat, Food |
| leaf, Food |
| leaf, Plant |
| stem, Plant |
| fur, Animals |
| ... |
|-------------------------|
通过使用MySQL InnoDB关系,链接表不会通过创建行占用更多空间;这是因为它们在某种程度上是链接的,并且都是通过引用存储的。这将非常减少数据库大小。
现在,对于踢球者来说,这是对数据库的一个聪明的mysql查询,它遵循以下步骤:
这将为您提供一个包含最多匹配标记数的类别列表。您希望如何制作MySQL查询取决于您。
虽然这似乎很多设置,但实际上并非如此。您最多有3个表,一个或两个PHP函数和一些MySQL查询。数据库只会与类别,标签和对两者的引用一样大(在链接表中;引用不占用太多空间!)
要更新数据库,只需将不存在的标记放入标记数据库,并将它们链接到您决定分配给描述的类别。这将扩大数据库的标签范围,并随着时间的推移,使您的数据库更加符合您的描述(即更准确)。
如果您想要非常详细,请在类别和标签之间插入重复的链接,以创建一种加权标记系统,这将使您的系统<强大>更加准确。