n-gram

Assign a higher score to matches containing the search query at an earlier position in elasticsearch

烈酒焚心 提交于 2020-05-17 07:46:07
问题 This question is similar to my other question enter link description here which Val answered. I have an index containing 3 documents. { "firstname": "Anne", "lastname": "Borg", } { "firstname": "Leanne", "lastname": "Ray" }, { "firstname": "Anne", "middlename": "M", "lastname": "Stone" } When I search for "Ann", I would like elastic to return all 3 of these documents (because they all match the term "Ann" to a degree). BUT, I would like Leanne Ray to have a lower score (relevance ranking)

文本深度特征提取

隐身守侯 提交于 2020-03-15 17:44:24
文本深度特征提取 注:本文内容摘自《深度学习算法实践》 为何要研究文本深度特征? ——因为文本深度特征无论对于文本分类还是文本预测,都是非常重要的。 文本特征的提取说白了就是将自然语言理解的问题转化成机器学习的问题。第一步肯定是找一种合适的方法,把语言表达数学化,即用可量化的方式来表示文本的特征。 下面将简单介绍一下文本的深度特征是如何量化的。 词特征表示 文本的深度特征有四种表示方法: 词表法 顾名思义,就是把词进行剔重、排序,和相对应的序号一一对应,形成字典。 举个例子: "今天天气甚好" (今天,1) (天气,2) (甚好,3) 那么,今天天气甚好,用向量表达就是[1,2,3],这样就方便扔到模型中进行计算了。 一般来说,对于Embedding层的输入基本上都使用词表示法处理后的向量表达。 Embedding层是什么? 是将词表中的单词在字典中的位置(索引)映射为固定维度的稠密的向量。 在Embedding这种结构出现之前,一般先用word2vec计算词向量,然后将词向量作为模型的输入层,计算词向量部分和模型是两个部分,而embedding出现后,就将这两个部分合并在一个模型中,输入层数据不是词向量,而是词在字典中的位置。Embedding主要不是作为降维使用,而是作为一种特征表示使用。 One-Hot表示 原理很简单,就是将每个词表示为一个向量,向量的长度就是句子的长度

IMDB影评倾向分类 - N-Gram

元气小坏坏 提交于 2020-03-13 05:30:17
catalogue 1. 数据集 2. 模型设计 3. 训练 1. 数据集 0x1: IMDB影评数据 本数据库含有来自IMDB的25,000条影评,被标记为正面/负面两种评价 from keras.datasets import imdb (X_train, y_train), (X_test, y_test) = imdb.load_data(path="imdb_full.pkl", nb_words=None, skip_top=0, maxlen=None, test_split=0.1) seed=113, start_char=1, oov_char=2, index_from=3) 1. path:如果你在本机上已有此数据集(位于'~/.keras/datasets/'+path),则载入。否则数据将下载到该目录下 2. nb_words:整数或None,要考虑的最常见的单词数,任何出现频率更低的单词将会被编码到0的位置。 3. skip_top:整数,忽略最常出现的若干单词,这些单词将会被编码为0 4. maxlen:整数,最大序列长度,任何长度大于此值的序列将被截断 5. seed:整数,用于数据重排的随机数种子 6. start_char:字符,序列的起始将以该字符标记,默认为1因为0通常用作padding 7. oov_char:字符,因nb

N-gram模型

谁都会走 提交于 2020-03-10 08:09:50
什么是N-gram? 为了解决自由参数数目过多的问题,引入了马尔科夫假设:随意一个词出现的概率只与它前面出现的有限的n个词有关。基于上述假设的统计语言模型被称为N-gram语言模型,也叫n元文法模型。 关于N的取值? 1)当n=1时,即一个词的出现与它周围的词是独立,这种我们称为unigram,也就是一元语言模型,此时自由参数量级是词典大小V。 2)当n=2时,即一个词的出现仅与它前面的一个词有关时,这种我们称为bigram,叫二元语言模型,也叫一阶马尔科夫链,此时自由参数数量级是V^2。 3)当n=3时,即一个词的出现仅与它前面的两个词有关,称为trigram,叫三元语言模型,也叫二阶马尔科夫链,此时自由参数数量级是V^3。 一般情况下只使用上述取值,因为从上面可以看出,自由参数的数量级是n取值的指数倍。 假设使用词为20000个,则 从模型的效果来看,理论上n的取值越大,效果越好。但随着n取值的增加,效果提升的幅度是在下降的。同时还涉及到一个可靠性和可区别性的问题,参数越多,可区别性越好,但同时单个参数的实例变少从而降低了可靠性。 n元语法模型的基本的公式可以看作为下面的概率公式P: 这里需要说明,2-gram模型的分母实际表示的就是w_i-1出现的次数。各x-gram的分子表示的就是相应词语序列的出现次数。 举个例子: 0-Gram: 语料库(词库):[经常,有,有意见,意见