当前位置: 首页 > 常见问题

ngram分词器,词法分析器

  • 常见问题
  • 2023-08-13

ngram分词器?1、ngram分词器Elasticsearch实现模糊搜索 2、keyword忽略大小写 Controller Service 大小写兼容搜索,即字段内容为 alan ,搜索 alan 、 ALAN 、 Alan 都可以搜索出来。那么,ngram分词器?一起来了解一下吧。

es分词器有哪些

看来没有高手啊,论坛高手都没人研究这东西,....必须稿滑来点激将备敬闹........PS一些常被设为高亮的作者.....得仿罩改一下题目

词法分析器

一种流行的自然语言处理库、自带语料库、具有分类,分词等很多功能,国外使用者居多,类似中文的jieba处理库

为单词序列分配概率的模型就叫做语言模型。

通俗来说, 语言模型就是这样一个模型:对于任意的词序列,它能够计算出这个序列是一句话的概率。或者说语言模型能预测单词序列的下一个词是什么。

**n-gram Language Models **

N-gram模型是一种典型的统计语言模型(Language Model,LM),统计语言模型是一个基于概率的判别模型.统计语言模型把语言(词的序列)看作一个随机事件,并赋予相应的概率来描述其属于某种语言集合的可能性。给定一个词汇集合 V,对于一个由 V 中的词构成的序列S = ⟨w1, · · · , wT ⟩ ∈ Vn,统计语言模型赋予这个序列一个概率P(S),来衡量S 符合自然语言的语法和语义规则的置信度。用一句简单的话说,统计语言模型就是计算一个句子的概率大小的这种模型。

n-gram模型可以减轻单词序列没有在训练集中出现过而引起的问题,即数据稀疏问题

n-gram模型问题

对于n-gram模型的问题,这两页ppt说的很明白

N-gram模型基于这样一种假设,当前词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各散此液个词出现概率的乘积。

jieba分词器

InnoDB的全文索引使用反向索引的设计。反向索引存储了一个单词(word)列表,对于每个单词,都有一个文档的列表,来标识这个单词出现的地方。为了支持临近搜索(proximity search),每个单词的位置信息也以字节偏移的方式存储。

当创建了InnoDB全文索引,一系列的索引表会一同被创建,见下面的例子:

最前面的六个表包含了反向索引,它们被称作附属索引表(auxiliary index table)。当输入的表被索引(tokenized)后,每个独立的单词(亦称作“tokens”)会被携带其DOC_ID和位置信息插入到索引表中。根据单词第一森梁旅个字符的字符集排序权重,在六个索引表中对单词进行完全排序和分区。

反向索引分区到六个附属索引表以支持并行的索引创建。默认有2个线程复制索引(Tokenize)、排序、插入单词和关联数据到索引表中。工作的线程的数量由innodb_ft_sort_pll_degree 配置项控制的。对于大表的全文索引,可以考虑增加线程数量。

如果主表创建在 xx表空间,索引表存储在它们自己的表空间中。反之,索引表存储于其索引的表空间中。

前面例子展示的另外一种索引表被称作通用索引表,它们被用于全文索引的“删除处理(deletion handing)”和存储内部状态。

solr分词器

SELECT

*

FROM

fulltext_sample

WHERE

copy

LIKE

\'%中文%\'OR

copy

LIKE

\'%没有回答慎燃%\'OR

copy

LIKE

\'%不让全文索引,我来模糊查询%\'OR

copy

LIKE

\'%这样变通%\'OR??copy

LIKE

\'%实宽谨虚际意义不大%\'OR

copy

LIKE

\'%效率和结果排序都是大问晌链题%\'OR

copy

LIKE

\'%继续ing,实在不行,把查询算法优化%\'

Es分词原理

字段按一字一词的形式分词,再利用短语查询来搜索。

ES中,可以实现一字一词的的分词器是NGram。

Ngram分词的文档地址:

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-ngram-tokenizer.html

它其实是一个上下文相连续字符的分词,可以看文档中的例子。当我们将它 min_gram 和 max_gram 都设为1时,它会按一字一词的形式分词。比如“shinyke@189.cn”,分词的结果是["s" , "h" , "i" , "n" , "y" , "k" , "e" , "@" , "1" , "8" , "9" , "." , "c" , "n" ]。

/index_name/

{

"settings":{

"analysis":{

"analyzer":{

"charSplit":{

腊租"type":"custom",

"tokenizer":"ngram_tokenizer"

}

},

"tokenizer":{

"ngram_tokenizer":{

"type":"nGram",

"min_gram":"1",

"max_gram":"1",

"token_chars":[

"letter",

"digit",

"punctuation"

]

}

}

}

}

}

以上语句中,构建了一个名为“charSplit”的分析器。

以上就是ngram分词器的全部内容,第一,使用N_Gram方式建立数据库的全文检索,要求可以对导入句子进行全文检索方式的模糊查询。第二, 能够统计出检索内容所耗时间。第三, 支持中英,和英中两种方式的检索。第四, 支持导入句子功能。

猜你喜欢