V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jiezhi
V2EX  ›  问与答

已有实体词的情况下,搜索词命名实体识别(NER)如何快速匹配

  •  
  •   jiezhi · 2022-03-29 14:11:57 +08:00 · 1117 次点击
    这是一个创建于 976 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚接触搜索不久,在实体名词都有的情况下,如何对搜索词进行实体匹配呢(不考虑复杂场景,只把对应实体识别出来)?

    看了一圈资料,OpenNLPCoreNLP似乎都要自己训练出模型来,有没有直接加载已有的实体词(就像 ES 那样)然后进行匹配的?

    还是只能自己实现前缀词匹配?

    6 条回复    2022-03-29 21:43:32 +08:00
    czfy
        1
    czfy  
       2022-03-29 18:02:36 +08:00   ❤️ 1
    呃感觉我好像没太看懂

    1. 具体场景就是搜索?类似在今日头条搜新闻这样的感觉?
    2. 然后 “实体名词” 都有,是指长文本对应的实体词已经被识别出来?那不是你本身就有模型吗
    3. 你又说不想自己训练模型,问题是搜索匹配本身其实就是一个简单规则,主要难点在识别长文本里的实体词,这个理论上要直接部署已有模型也可以,自己训练也可以的吧
    jiezhi
        2
    jiezhi  
    OP
       2022-03-29 18:11:34 +08:00
    @czfy #1 就是垂直电商,比如药品电商,那么药品品牌和药品名等于都有了,要识别出用户搜哪个品牌哪个药品(也有症状、疾病名称实体)

    所以我指的实体是直接从数据库里用商品信息生产的,我看 opennlp 的自定义模型好像都是输入标注语句来训练的。而我想要的其实就是把用户搜索词里面的实体名称识别出来,应该不需要再训练了吧。
    czfy
        3
    czfy  
       2022-03-29 18:18:40 +08:00   ❤️ 1
    所以相当于你要做的是

    1. 算法识别用户输入的搜索文本
    2. 匹配算法识别的用户输入文本的实体词 与 商品已有的实体词
    3. 输出搜索结果

    那理论上你就先直接用现有模型看看效果咯,根据你的业务指标(用户搜索结果点击率 /跳转率 /下单率之类的)判断,如果符合业务要求就不用重新训练,效果不好那还是要重新训练
    jiezhi
        4
    jiezhi  
    OP
       2022-03-29 18:18:47 +08:00
    @czfy #1 我想要的类似这个 https://nlp.stanford.edu/software/regexner.html

    指定实体名称和实体类型的输入数据,然后把输入里对应的都解析出来。但感觉用这些框架还要下载很大的数据模型,有点高射炮打蚊子的感觉。
    czfy
        5
    czfy  
       2022-03-29 18:20:37 +08:00
    如果你觉得这些太大,那就做个最简单的分词吧...
    实体识别确实比分词要更复杂
    lhfcws
        6
    lhfcws  
       2022-03-29 21:43:32 +08:00   ❤️ 1
    最简单就是借助一些成熟的 nlp 库,把你的实体词(有的要带词性)导入进去,然后调用分词。把分词结果过滤 stopwords 后导入 es 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   864 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:05 · PVG 06:05 · LAX 14:05 · JFK 17:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.