ES分词

在ES中,需要用倒排索引建立查询逻辑,放到Lecene中,如何分词,中文、英文的分词插件都有不同的选择。

文本分析就是把全文本转换成一系列单词(term/token)的过程,也叫分词。

在 ES 中,Analysis 是通过分词器(Analyzer) 来实现的,可使用 ES 内置的分析器或者按需定制化分析器。

举例子:比如你输入 Mastering Elasticsearch,会自动帮你分成两个单词,一个是 mastering,另一个是 elasticsearch,可以看出单词也被转化成了小写的。

GET _analyze
{
    "analyzer": "standard",
    "text" : "Mastering Elasticsearch , elasticsearch in Action"
}

分词器是专门处理分词的组件,分词器由以下三部分组成:

Character Filters:针对原始文本处理,比如去除 html 标签

Tokenizer:按照规则切分为单词,比如按照空格切分

Token Filters:将切分的单词进行加工,比如大写转小写,删除 stopwords,增加同义语

ES内置的分词器

Standard Analyzer - 默认分词器,按词切分,小写处理

Simple Analyzer - 按照非字母切分(符号被过滤),小写处理

Stop Analyzer - 小写处理,停用词过滤(the ,a,is)

Whitespace Analyzer - 按照空格切分,不转小写

Keyword Analyzer - 不分词,直接将输入当做输出

Pattern Analyzer - 正则表达式,默认 \W+

Language - 提供了 30 多种常见语言的分词器

Customer Analyzer - 自定义分词器

有的分词器效率优先,有的是准确率优先,所以我们选用的时候需要根据业务情况来选择分词器。

中文分词器

IK:支持自定义词库,支持热更新分词字典

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

jieba :Python 中最流行的分词系统,支持分词和词性标注

支持繁体分词、自定义词典、并行分词等

https://github.com/sing1ee/elasticsearch-jieba-plugin

THULAC :THU Lexucal Analyzer for Chinese, 清华大学自然语言处理和社会人文计算实验室的一套中文分词器

https://github.com/thunlp/THULAC-Java

唠嗑广场

投资研究:复购率

一个车企,今年卖了100台车,明年想要增长10%,则需要找到新的110人来买,因为车不会那么快贬值。

一个类消费公司,今年卖了100个面包,明年要增长10%,今年吃面包的,明年也有会吃的,110个人次的面包,难度稍微小一些。

理论上来说,消费频率比较高的公司,更好;消费是个很广泛的词语,不仅仅是面包、白酒、酱油,还有持续的存款、长期的保单、持续的电力消费、情绪消费等等,能够满足持续性消费的公司,应该关注。

这大概就是复购率吧,复购率越高越好。