在做电商搜索的产品。
目前遇到一个问题,是如何判断商品标题中的中心词,有没有算法、(或者)成熟平台的接口可以引用?
要解决的问题举例如下:
比如用户搜索:榴莲 找到两个商品,商品标题分别是:泰国榴莲;榴莲冰淇淋
这两个商品的中心词分别是:榴莲;冰淇淋
如果没有这个算法,那么可能冰淇淋排在前面,而很多榴莲排在了后面。
(注:除了中心词的判断,当然有其它方法可以解决这个问题,比如关键词和类目的关联关系判断。在不考虑这一场景下,只考虑通过中心词来解决这个问题,是否有算法?)
1
ilovebaicai 2018-01-25 16:54:14 +08:00
如果是单纯的字符串匹配算法,可以试试 ac,python 有实现的库 ahocorasick。
你这个中心词是怎么定义的? |
2
feimo OP @ilovebaicai 没有具体的定义规则。
如果按人的思路来看,中心词其实就是能够代表这个商品是什么东西、最普遍叫法的词语,如: 泰国榴莲——泰国(地名);榴莲(中心词) 榴莲冰淇淋——榴莲(描述性词语); 冰淇淋(中心词,才是代表这个商品是什么东西的词语) 榴莲味软糖——榴莲味(描述性词语); 软糖(中心词,才是代表这个商品是什么东西的词语) 榴莲披萨——榴莲(描述性、属性类词语); 披萨(中心词,才是代表这个商品是什么东西的词语) 我是做产品的,所以对技术了解有限,以我现在公司的能力,做不到这种语义分析。 但是不知道,现在是否有这样的算法、其它平台是否有这种能力,可以由机器判断商品标题中,哪个词是中心词? |
3
ballshapesdsd 2018-01-25 17:06:33 +08:00
怎么感觉后面的就是中心词。。形容词不都在前面的吗
|
4
ilovebaicai 2018-01-25 17:35:48 +08:00 1
抱歉,想不到什么好的方法。
你可以看一下这个:哈工大 LTP,https://github.com/HIT-SCIR/ltp |
5
feimo OP @ballshapesdsd 可能有较多数情况符合这一规律,但并不完全是。商品标题的名称太多了,比如下面的:
如果只按后面的分词来确定中心词,很可能出现的结果是: 日式红豆夹心饼(草莓味)——————草莓,定义为中心词 跑步机养护硅油 30 毫升健身器材——健身器材,定义为中心词 |
6
feimo OP @ilovebaicai 好的,谢谢,我去了解一下
|
7
qiayue 2018-01-25 17:57:25 +08:00
榴莲冰激凌
榴莲是冰激凌的原材料 冰激凌不是榴莲的原材料 红豆夹心饼草莓味 红豆是饼的原材料 草莓也是饼的原材料 所以我觉得最容易实现的一个思路是,建立一个库,标记这些名词,哪些是加工出来的,哪些是原材料 虽然这个方法只能解决一部分商品问题,但能解决一些是一些 |
8
feimo OP @qiayue 是个思路。
我有想过两个方案。 其一是:针对单个商品,增加中心词字段。这样需要人工来维护,人工来对每个商品定义其中心词。中心词召回的商品,则排序权重更高。 其二是:因为方案一,人工维护成本大(且是持续性维护),最后被否了。 因此有了第二个方案,建一个中心词表,将所有属于中心词的名词,都放到这个表内(人工维护成本就很低,且是一次性维护)。如何应用呢,举例如下: 泰国榴莲————中心词表中,有榴莲 榴莲冰淇淋————中心词表中,有榴莲、冰淇淋 那么就看商品名中,核心词数量,越少,则越精准。排序权重就越高。 但是第二个,也不可控,很多商品的名称各种各样。可能会导出现 badcase。 你的思路,想来应该具备可行性。 |
9
gowl 2018-01-25 18:48:37 +08:00
看来语义分析是一个巨大的市场啊:)
|
10
dezhou9 2019-01-11 13:18:26 +08:00 via Android
先找中心词,ner 可以做到
|