我一直在寻找一个开源解决方案来建议给出问题或文字的类别。
例如,“Lady Gaga是谁?”可能会回归'娱乐','音乐'或'名人'。
“棒球有多少击球?”会给我'棒球',或'运动'。
分类不一定是完美的,但应该是一些接近的分类。
在任何地方我都可以获得热门类别列表吗?
答案 0 :(得分:3)
这是document classification problem - 您的“文档”只是查询或文本。
您首先需要确定可能类别的列表。 “Lady Gaga是谁?”可以是娱乐,名人,英语问答,传记,人物等。接下来,您将应用决策框架为文本中的每个类别分配一个分数。最高分是其类别 - 只要它高于噪声阈值并且没有第二位类别太接近区分。决策框架可以包括贝叶斯网络或一组自定义规则等方法。
一些实现分类器的开源项目包括:
答案 1 :(得分:1)
屏幕刮掉Wolfram alpha。
您可以从dmoz获得一个很好的类别列表。
答案 2 :(得分:0)
答案不是很多,但也许这个分类词典会有所帮助:
http://www.provalisresearch.com/wordstat/WordNet.html
我想你可以从字符串中提取不常见的单词,在分类字典中查找它们,并返回在你的条件上获得最多匹配的类别。处理像“Lady Gaga”这样的流行文化引用会很棘手,但是......也许你可以进行Google搜索并分析其结果。
答案 3 :(得分:0)
其他人代表你做了很多工作,所以我建议你使用像OpenCalais API这样的东西。在http://code.google.com/p/python-calais/处有一个API的python包装器。
“Lady Gaga是谁?”似乎是一篇太短的文本,让他们给出一个体面的回应。但是,如果您花了很多时间来完成两个步骤并从维基百科中获取Lady Gaga的第一段,然后将其提供给OpenCalais API,您将获得非常好的结果。
只需将维基百科中的第一段剪切并粘贴到OpenCalais viewer即可快速查看。结果是对“娱乐文化”这一主题进行了分类,并对其进行了100%的置信度估计。
同样,棒球示例将“体育”作为主题返回,并带有“娱乐”,“棒球”等社交标签。
编辑以下是Calais使用社交标签提示的另一个想法:将Lady Gaga的维基百科网址发送到美味的API
curl -k https://user:password@api.del.icio.us/v1/posts/suggest?url=http://en
.wikipedia.org/wiki/Lady_gaga
返回
<?xml version="1.0" encoding="UTF-8"?>
<suggest>
<recommended>music</recommended>
<recommended>wikipedia</recommended>
<recommended>wiki</recommended>
<recommended>people</recommended>
<recommended>bio</recommended>
<recommended>cool</recommended>
<recommended>facts</recommended>
<popular>music</popular>
<popular>gaga</popular>
<popular>ladygaga</popular>
<popular>wikipedia</popular>
<popular>lady</popular>
等。应该很容易忽略维基百科/维基类型条目。