美文网首页
多语⾔及中⽂分词与检索

多语⾔及中⽂分词与检索

作者: 滴流乱转的小胖子 | 来源:发表于2020-08-06 18:12 被阅读0次

一、⾃然语言与查询 Recall

当处理⼈类⾃然语⾔时,有些情况,尽管搜索和原⽂不完全匹配,但是希望搜到⼀些内容
Quick brown fox 和 fast brown fox / Jumping fox 和 Jumped foxes

⼀些可采取的优化

  • 归一化词元:清除变⾳符号,如 rôle 的时候也会匹配 role
  • 抽取词根:清除单复数和时态的差异
  • 包含同义词
  • 拼写错误:拼写错误,或者同音异形词

二、混合多语言的挑战

一些具体的多语言场景

不同的索引使用不同的语言 / 同一个索引中,不同的字段使用不同的语言 / 一个文档的一个字段内混合不同的语言

混合语言存在的一些挑战

  • 词干提取:以色列文档,包含希伯来语,阿拉伯语,俄语,英语
  • 不正确的文档频率, 英文为主的文章中,德文算分高(稀有)
  • 需要判断用户搜索时使用的语言,语言识别 (Compact Language Detector)
    例如,根据浏览器属性,判断语言,查询不同的索引

三、分词的挑战

英文分词: You‘ re 分成一个还是多个? Half-baked

中文分词

  • 分词标准:哈⼯大标准中,姓和名分开。 HanLP 是在一起的。具体情况需制定不不
    同的标准
  • 歧义 (组合型歧义,交集型歧义,真歧义)
    中华人⺠共和国 / 美国会通过对台售武法案 / 上海海仁和服装⼚

四、中文分词器现状

中⽂分词器以统计语言模型为基础,经过几⼗年的发展,今天基本已经可以看作是一个
已经解决的问题

不同分词器的好坏,主要的差异在于数据的使用和工程使用的精度

常见的分词器都是使用机器学习算法和词典相结合,一方面能够提高分词准确率,另一方面能够改善领域适应性

五、一些中文分词器

HanLP 面向生产环境的自然语言处理工具包

http://hanlp.com
https://github.com/KennFalcon/elasticsearch-analysis-hanlp

./elasticsearch-plugin install https://github.com/KennFalcon/elasticsearch-analysishanlp/releases/download/v7.1.0/elasticsearch-analysis-hanlp-7.1.0.zip
image.png

IK 分词器

https://github.com/medcl/elasticsearch-analysis-ik

./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysisik/releases/download/v7.1.0/elasticsearch-analysis-ik-7.1.0.zip

支持字典热更新


image.png

PinYin Analysis

./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysispinyin/releases/download/v7.1.0/elasticsearch-analysis-pinyin-7.1.0.zip
image.png

测试demo

来到杨过曾经生活过的地方,小龙女动情地说:“我也想过过过儿过过的生活。”

你也想犯范范玮琪犯过的错吗

校长说衣服上除了校徽别别别的

这几天天天天气不好

我背有点驼,麻麻说“你的背得背背背背佳

#stop word

DELETE my_index
PUT /my_index/_doc/1
{ "title": "I'm happy for this fox" }

PUT /my_index/_doc/2
{ "title": "I'm not happy about my fox problem" }


POST my_index/_search
{
  "query": {
    "match": {
      "title": "not happy fox"
    }
  }
}


#虽然通过使用 english (英语)分析器,使得匹配规则更加宽松,我们也因此提高了召回率,但却降低了精准匹配文档的能力。为了获得两方面的优势,我们可以使用multifields(多字段)对 title 字段建立两次索引: 一次使用 `english`(英语)分析器,另一次使用 `standard`(标准)分析器:

DELETE my_index

PUT /my_index
{
  "mappings": {
    "blog": {
      "properties": {
        "title": {
          "type": "string",
          "analyzer": "english"
        }
      }
    }
  }
}

PUT /my_index
{
  "mappings": {
    "blog": {
      "properties": {
        "title": {
          "type": "string",
          "fields": {
            "english": {
              "type":     "string",
              "analyzer": "english"
            }
          }
        }
      }
    }
  }
}


PUT /my_index/blog/1
{ "title": "I'm happy for this fox" }

PUT /my_index/blog/2
{ "title": "I'm not happy about my fox problem" }

GET /_search
{
  "query": {
    "multi_match": {
      "type":     "most_fields",
      "query":    "not happy foxes",
      "fields": [ "title", "title.english" ]
    }
  }
}


#安装插件
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.1.0/elasticsearch-analysis-ik-7.1.0.zip
#安装插件
bin/elasticsearch install https://github.com/KennFalcon/elasticsearch-analysis-hanlp/releases/download/v7.1.0/elasticsearch-analysis-hanlp-7.1.0.zip




#ik_max_word
#ik_smart
#hanlp: hanlp默认分词
#hanlp_standard: 标准分词
#hanlp_index: 索引分词
#hanlp_nlp: NLP分词
#hanlp_n_short: N-最短路分词
#hanlp_dijkstra: 最短路分词
#hanlp_crf: CRF分词(在hanlp 1.6.6已开始废弃)
#hanlp_speed: 极速词典分词

POST _analyze
{
  "analyzer": "hanlp_standard",
  "text": ["剑桥分析公司多位高管对卧底记者说,他们确保了唐纳德·特朗普在总统大选中获胜"]

}     

#Pinyin
PUT /artists/
{
    "settings" : {
        "analysis" : {
            "analyzer" : {
                "user_name_analyzer" : {
                    "tokenizer" : "whitespace",
                    "filter" : "pinyin_first_letter_and_full_pinyin_filter"
                }
            },
            "filter" : {
                "pinyin_first_letter_and_full_pinyin_filter" : {
                    "type" : "pinyin",
                    "keep_first_letter" : true,
                    "keep_full_pinyin" : false,
                    "keep_none_chinese" : true,
                    "keep_original" : false,
                    "limit_first_letter_length" : 16,
                    "lowercase" : true,
                    "trim_whitespace" : true,
                    "keep_none_chinese_in_first_letter" : true
                }
            }
        }
    }
}


GET /artists/_analyze
{
  "text": ["刘德华 张学友 郭富城 黎明 四大天王"],
  "analyzer": "user_name_analyzer"
}


相关资源

分词算法综述 https://zhuanlan.zhihu.com/p/50444885
一些分词工具,供参考:

相关文章

  • 多语⾔及中⽂分词与检索

    一、⾃然语言与查询 Recall 当处理⼈类⾃然语⾔时,有些情况,尽管搜索和原⽂不完全匹配,但是希望搜到⼀些内容Q...

  • 4.7-多语言及中文分词与检索

    ⾃然语⾔与查询 Recall 当处理⼈类⾃然语⾔时,有些情况,尽管搜索和原⽂不完全匹配,但是希望搜到⼀些内容Qui...

  • 【elasticsearch】17、多语言及中文分词与检索

    自然语言与查询recall 当处理人类自然语言时,有些情况,尽管搜索和原文不完全匹配,但是希望搜到一些内容quic...

  • mmseg4j中文分词包使用报告

    目录 认识中文分词包(下载、安装及运行) 分词方法与效果分析 分词算法学习 分词结果提交(2017/5/24完善方...

  • MySQL搜索(全文检索)

    MySQL在5.7版本中终于提供了原生的中文全文检索的能力,通过内置了ngram全文检索插件,用来支持中文分词,并...

  • Proximity Matching

    近似匹配 使用TF/IDF的标准全文检索是检索字段中是否包含某些词语,而无法得知词语之间的关系。理解分词之间的关系...

  • 全文检索-倒排索引

    简历索引时 会把 text 类型的 fild 进行分词 。保存 当前 记录的 id 和分词 对应。 在检索时 ,...

  • ElasticSearch进阶

    一、QueryDSL基本使用&match_all 二、match分词匹配 字符串,多个单词(分词加全文检索) 最终...

  • es常用字段类型

    text:按规则分词,至少分词1个词,做全文检索(不要存放空值,会导致性能浪费)默认分词器standard应用场景...

  • 中文分词之正向最大匹配法

    中文分词在中文信息处理中是最最基础的,无论机器翻译亦或信息检索还是其他相关应用,如果涉及中文,都离不开中文分词,因...

网友评论

      本文标题:多语⾔及中⽂分词与检索

      本文链接:https://www.haomeiwen.com/subject/jfpyrktx.html