V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
feimo
V2EX  ›  算法

搜索引擎中的语义分析问题请教——如何判断商品标题中的中心词?

  •  
  •   feimo · 2018-01-25 16:13:39 +08:00 · 3062 次点击
    这是一个创建于 2500 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在做电商搜索的产品。

    目前遇到一个问题,是如何判断商品标题中的中心词,有没有算法、(或者)成熟平台的接口可以引用?

    要解决的问题举例如下:

    比如用户搜索:榴莲 找到两个商品,商品标题分别是:泰国榴莲榴莲冰淇淋

    这两个商品的中心词分别是:榴莲冰淇淋

    如果没有这个算法,那么可能冰淇淋排在前面,而很多榴莲排在了后面。

    (注:除了中心词的判断,当然有其它方法可以解决这个问题,比如关键词和类目的关联关系判断。在不考虑这一场景下,只考虑通过中心词来解决这个问题,是否有算法?)

    10 条回复    2019-01-11 13:18:26 +08:00
    ilovebaicai
        1
    ilovebaicai  
       2018-01-25 16:54:14 +08:00
    如果是单纯的字符串匹配算法,可以试试 ac,python 有实现的库 ahocorasick。
    你这个中心词是怎么定义的?
    feimo
        2
    feimo  
    OP
       2018-01-25 17:04:03 +08:00
    @ilovebaicai 没有具体的定义规则。
    如果按人的思路来看,中心词其实就是能够代表这个商品是什么东西、最普遍叫法的词语,如:

    泰国榴莲——泰国(地名);榴莲(中心词)
    榴莲冰淇淋——榴莲(描述性词语); 冰淇淋(中心词,才是代表这个商品是什么东西的词语)
    榴莲味软糖——榴莲味(描述性词语); 软糖(中心词,才是代表这个商品是什么东西的词语)
    榴莲披萨——榴莲(描述性、属性类词语); 披萨(中心词,才是代表这个商品是什么东西的词语)

    我是做产品的,所以对技术了解有限,以我现在公司的能力,做不到这种语义分析。
    但是不知道,现在是否有这样的算法、其它平台是否有这种能力,可以由机器判断商品标题中,哪个词是中心词?
    ballshapesdsd
        3
    ballshapesdsd  
       2018-01-25 17:06:33 +08:00
    怎么感觉后面的就是中心词。。形容词不都在前面的吗
    ilovebaicai
        4
    ilovebaicai  
       2018-01-25 17:35:48 +08:00   ❤️ 1
    抱歉,想不到什么好的方法。
    你可以看一下这个:哈工大 LTP,https://github.com/HIT-SCIR/ltp
    feimo
        5
    feimo  
    OP
       2018-01-25 17:45:10 +08:00
    @ballshapesdsd 可能有较多数情况符合这一规律,但并不完全是。商品标题的名称太多了,比如下面的:
    如果只按后面的分词来确定中心词,很可能出现的结果是:

    日式红豆夹心饼(草莓味)——————草莓,定义为中心词
    跑步机养护硅油 30 毫升健身器材——健身器材,定义为中心词
    feimo
        6
    feimo  
    OP
       2018-01-25 17:55:34 +08:00
    @ilovebaicai 好的,谢谢,我去了解一下
    qiayue
        7
    qiayue  
       2018-01-25 17:57:25 +08:00
    榴莲冰激凌
    榴莲是冰激凌的原材料
    冰激凌不是榴莲的原材料

    红豆夹心饼草莓味
    红豆是饼的原材料
    草莓也是饼的原材料

    所以我觉得最容易实现的一个思路是,建立一个库,标记这些名词,哪些是加工出来的,哪些是原材料
    虽然这个方法只能解决一部分商品问题,但能解决一些是一些
    feimo
        8
    feimo  
    OP
       2018-01-25 18:13:19 +08:00
    @qiayue 是个思路。
    我有想过两个方案。

    其一是:针对单个商品,增加中心词字段。这样需要人工来维护,人工来对每个商品定义其中心词。中心词召回的商品,则排序权重更高。

    其二是:因为方案一,人工维护成本大(且是持续性维护),最后被否了。
    因此有了第二个方案,建一个中心词表,将所有属于中心词的名词,都放到这个表内(人工维护成本就很低,且是一次性维护)。如何应用呢,举例如下:
    泰国榴莲————中心词表中,有榴莲
    榴莲冰淇淋————中心词表中,有榴莲、冰淇淋
    那么就看商品名中,核心词数量,越少,则越精准。排序权重就越高。
    但是第二个,也不可控,很多商品的名称各种各样。可能会导出现 badcase。

    你的思路,想来应该具备可行性。
    gowl
        9
    gowl  
       2018-01-25 18:48:37 +08:00
    看来语义分析是一个巨大的市场啊:)
    dezhou9
        10
    dezhou9  
       2019-01-11 13:18:26 +08:00 via Android
    先找中心词,ner 可以做到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1527 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:13 · PVG 01:13 · LAX 09:13 · JFK 12:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.