首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Python中计算n-gram的逐点互信息(PMI)得分

在Python中计算n-gram的逐点互信息(PMI)得分,可以使用自然语言处理库NLTK和NumPy。以下是一个简单的示例代码:

代码语言:python
代码运行次数:0
复制
import nltk
from nltk.util import ngrams
from collections import Counter
import numpy as np

def pmi_scorer(text, n=2):
    # 计算n-gram
    ngram_list = list(ngrams(nltk.word_tokenize(text), n))
    
    # 计算n-gram出现次数
    ngram_counter = Counter(ngram_list)
    
    # 计算n-gram总数
    total_ngrams = sum(ngram_counter.values())
    
    # 计算每个n-gram的PMI得分
    pmi_scores = {}
    for ngram, count in ngram_counter.items():
        p_x = count / total_ngrams
        p_y = 0
        p_xy = 0
        for i, word in enumerate(ngram):
            if i == 0:
                p_y = sum([1 for ngram_list in ngram_counter.keys() if word in ngram_list]) / total_ngrams
            else:
                p_xy += ngram_counter[ngram] / total_ngrams
        pmi = np.log2((p_xy * total_ngrams) / (p_x * p_y))
        pmi_scores[ngram] = pmi
    
    return pmi_scores

text = "Python是一种解释型、高级、通用的编程语言。"
pmi_scores = pmi_scorer(text)
print(pmi_scores)

在这个示例中,我们使用了NLTK库来分词,然后计算了2-gram的PMI得分。PMI得分越高,表示这个n-gram的关联性越强。

推荐的腾讯云相关产品:

  • 腾讯云数据处理服务:提供了一系列数据处理服务,包括数据分析、数据挖掘、机器学习等,可以帮助用户进行大数据处理和分析。
  • 腾讯云自然语言处理:提供了自然语言处理服务,包括文本分析、机器翻译、语音识别等,可以帮助用户实现自然语言处理功能。
  • 腾讯云人工智能开放平台:提供了一系列人工智能服务,包括智能语音、智能客服、智能视频等,可以帮助用户实现人工智能应用。

产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NLP︱句子级、词语级以及句子-词语之间相似性(相关名称:文档特征、词特征、词权重)

从上面的公式上看出:如果某个特征词频率很低,那么互信息得分就会很大,因此互信息法倾向"低频"特征词。相对词频很高词,得分就会变低,如果这词携带了很高信息量,互信息法就会变得低效。...依据IG定义,每个特征词tiIG得分前面一部分: ? 计算值是一样,可以省略。因此,IG计算公式如下: ? IG与MI存在关系: ? 因此,IG方式实际上就是互信息 ? 与互信息 ? 加权。...我们通过计算两个词间归一化逐点互信息(NPMI)来确定两个词搭配关系。逐点互信息PMI),经常用在自然语言处理,用于衡量两个事件紧密程度。...归一化逐点互信息(NPMI)是逐点互信息归一化形式,将逐点互信息值归一化到-1到1之间。 如果两个词一定距离范围内共同出现,则认为这两个词共现。...逐点互信息(pmi)计算公式 滑动窗口 可以看出,如果我们提取固定搭配不限制距离,会使后面偶然出现某个词概率增大,降低该统计稳定性。

4.9K21

构建算法模型_模型与算法有什么不同

大家好,又见面了,我是你们朋友全栈君。 文章目录 1. 情感词典内容 2. 情感倾向点互信息算法(SO-PMI)算法 点互信息算法 PMI 情感倾向点互信息算法 SO-PMI 3....word2 word2 表示两个不同词, P w o r d 1 P_{word1} Pword1​ 表示整个语料库 w o r d 1 word1 word1 出现概率,一般认为: 1....PMI < 0 表示两个词语是不相关,互斥 PMI算法用一句话形容就是:两个词同时出现概率越大,其相关性越大 情感倾向点互信息算法 SO-PMI P w o r d P_{word} Pword​...计算每个词与这两个列表每个词PMI,看这个词更接近哪个列表,是更接近正向情感词列表还是负向情感词列表。...导入项目 python环境安装依赖: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ jieba 然后使用git导入项目: git

48610
  • NLP+词法系列(一)︱中文分词技术小结、几大分词引擎介绍与比较

    RNN在理论上可以储存任意长度转态序列,但是不同场景这个长度可能不同。比如在词预测例子: 1,“他是亿万富翁,他很?”...经过 哈工大社会计算与信息检索研究中心 11 年持续研发和推广,LTP 已经成为国内外最具影响力中文处理基础平台。 切分歧义是分词任务主要难题。...我们通过计算两个词间归一化逐点互信息(NPMI)来确定两个词搭配关系。逐点互信息PMI),经常用在自然语言处理,用于衡量两个事件紧密程度。...归一化逐点互信息(NPMI)是逐点互信息归一化形式,将逐点互信息值归一化到-1到1之间。如果两个词一定距离范围内共同出现,则认为这两个词共现。...google无果和阅读了相应代码后,我决定照猫画虎为NLTK写一个斯坦福中文分词器接口,这样可以方便Python调用斯坦福文本处理工具,详情可见该公众号分享文。

    1.4K32

    资源 | Chinese Word Vectors:目前最全中文预训练词向量集合

    格式 本资源预训练词向量文件以文本格式存储。每一行包含一个单词及其词向量。每个值由空格分开。第一行记录元信息:第一个数字表示该单词文件排序,第二个数字表示维度大小。...多种共现信息 开发者发布了不同共现(co-occurrence)统计数据上词向量。目标和上下文向量相关论文中一般称为输入和输出向量。 在这一部分,我们可以获取词层面之上任意语言单元向量。...PPMI 模型是一种稀疏特征袋(bag-of-feature)表征方法,且它会使用正逐点互信息(PPMI)对特征进行加权。...上下文特征 三种上下文特征:单词、n-gram 和字符词嵌入文献很常用。大多数词表征方法本质上利用了词-词共现统计,即使用词作为上下文特征(词特征)。...它包含了 17813 个类比问题,覆盖了综合词法和语义关联。CA-translated、CA8 和它们详细信息 testets 文件夹

    79060

    NLP - 新词发现

    正向最大匹配、反向最大匹配、双向最大匹配共同缺点 对词表极为依赖,如果没有词表,则无法进行;如果词表缺少需要词,结果也不会准确 切分过程不会关注整个句子表达意思,只会将句子看成一个个片段 如果文本中出现错别字...(c_1) \cdot \ldots \cdot P(c_n)} p(w): 组合出现概率(= 组合出现次数 / 组合总数) p(c_n): 组合单个字出现概率 词外部应该是多变 左熵、右熵...: 左/右边字出现概率 代码: 计算互信息(内部凝固度) 计算左右熵 根据互信息和左右熵统计发现词 import math from collections import defaultdict...() # 计算互信息/内部凝固度 self.calc_entropy() # 计算左右熵 self.calc_word_values() # 统计 # 加载语料数据,...def calc_pmi(self): self.calc_total_count_by_length() # 计算每种词长下词总数 self.pmi = {} for

    16710

    资源 | Chinese Word Vectors:目前最全中文预训练词向量集合

    格式 本资源预训练词向量文件以文本格式存储。每一行包含一个单词及其词向量。每个值由空格分开。第一行记录元信息:第一个数字表示该单词文件排序,第二个数字表示维度大小。...多种共现信息 开发者发布了不同共现(co-occurrence)统计数据上词向量。目标和上下文向量相关论文中一般称为输入和输出向量。 在这一部分,我们可以获取词层面之上任意语言单元向量。...PPMI 模型是一种稀疏特征袋(bag-of-feature)表征方法,且它会使用正逐点互信息(PPMI)对特征进行加权。...上下文特征 三种上下文特征:单词、n-gram 和字符词嵌入文献很常用。大多数词表征方法本质上利用了词-词共现统计,即使用词作为上下文特征(词特征)。...它包含了 17813 个类比问题,覆盖了综合词法和语义关联。CA-translated、CA8 和它们详细信息 testets 文件夹

    2.2K30

    情感强度分类_情感量表

    计算两个义原相似度公式如下: 其中,p1,p2为两个需要计算比较义原,Depth(p)是义原层次体系深度,Spd(p1,p2)表示p1,p2两者层次体系重合度。...以上计算方式可以github下载到源代码,直接调用该函数就可以计算两个单词相似度,但是计算结果返回值为0,即无法计算这两个词相似度,个人理解是返回0,应该是其语义库无法查询到该词(下载情感词典存在类似短语词...二、SO-PMI 文献: Turney使用PMI(点态互信息量)来计算两个词相关强度 该值越大表示两个词语相关程度就越强。 可以通过搜索引擎来计算PMI值。...因此,word1与word2PMI计算为: 实际应用,也经常使用语料库来统计词语出现概率。...关于SO-PMI:由于SO-HowNet存在以上缺点,基于统计SO-PMI计算两个词互信息,即计算词语语料中出现概率以及词语与词语句子同时出现概率可用于提供计算词语倾向性一种方法。

    37120

    Word Embeddings从0到1

    基于 和, 通过计算每个词在给定先行词下概率积, 能估计整个句子或文档积: 基于 n-gram LM , 通过单词所在 n-grams 频率来计算其概率: 5-gram + Kneser-Ney...神经网络, 一般使用 softmax 来计算单词概率: . h 是输出层前一层输出向量, v’ 是单词对应 embedding....现在来看上面的 objective function, 意在最大化正确单词序列得分与错误单词序列得分之间距离, with a margin of 1....Levy & Goldberg (2014) 证明了 SGNS 隐式分解了 PMI matrix, 由此, 以下源于此变种可以引入 PMI : .... SGNS , negative samples 数 k 会影响 PMI matrix , 即参数 k 会将 PMI 值漂移 log k. 将这一特性应用于 PMI, 就得到了 : .

    76050

    NLP经典书籍鱼书第3章-基于计数方法改进

    query_vec = word_matrix[query_id] # 从共现矩阵找出对应id向量 # 计算相似度 vocab_size = len(id_to_word...这意味着,仅仅因为the是个常用词,它就被认为与car有很强相关性解决方法点互信息PMI使用点互信息Pointwise Mutual Information,PMIPMI值越高表示相关性越强定义为:...= np.log2(C[i,j] * N / (S[j] * S[i]) + eps) # 计算pmi和ppmi #print("pmi: ",pmi)...:PPMI矩阵存在很多元素都是0,这表明向量很多元素是不重要向量大多数元素为0矩阵(向量)称为稀疏矩阵(稀疏向量)从稀疏向量找出重要轴,用更少维度对其重新表示;稀疏矩阵转化为密集矩阵奇异值分解...$N^3$;计算量大大增加,现实无法达到。

    75600

    情感分析新方法,使用word2vec对微博文本进行情感分析和分类

    情感分析是一种常见自然语言处理(NLP)方法应用,特别是以提取文本情感内容为目标的分类方法。通过这种方式,情感分析可以被视为利用一些情感得分指标来量化定性数据方法。...句子每个单词都有一个得分,乐观单词得分为 +1,悲观单词则为 -1。然后我们对句子中所有单词得分进行加总求和得到一个最终情感总分。...例如,在这个简易模型,因为“not”得分为 -1,而“good”得分为 +1,所以词组“not good”将被归类到中性词组。...情感词典构建:中国知网(HowNet)中文情感分析用词语集; SO-PMIPMI指的是点互信息 PMI(a, b)=p(a,b)/(p(a)p(b)) 假设有一个句子集合,总量为N 出现a次数为A,...利用 Python 实现 Word2Vec 实例 本节,我们展示了人们如何在情感分类项目中使用词向量。

    5.4K112

    NLP学习3-基于计数方法改进

    query_vec = word_matrix[query_id] # 从共现矩阵找出对应id向量 # 计算相似度 vocab_size = len(id_to_word...这意味着,仅仅因为the是个常用词,它就被认为与car有很强相关性 解决方法 点互信息PMI 使用点互信息Pointwise Mutual Information,PMIPMI值越高表示相关性越强...= np.log2(C[i,j] * N / (S[j] * S[i]) + eps) # 计算pmi和ppmi #print("pmi: ",pmi)...,各个单词向量维度也会随着增加 矩阵稀疏:PPMI矩阵存在很多元素都是0,这表明向量很多元素是不重要 向量大多数元素为0矩阵(向量)称为稀疏矩阵(稀疏向量) 从稀疏向量找出重要轴...N^3;计算量大大增加,现实无法达到。

    25640

    中文情感词典构建与使用_文本情感识别

    但由于中文多变性,语义多重性与数据集缺乏,使得国内情感分析暂落后于国外。本文将记录博主项目中构建情感词典经验,欢迎大家指正。 我们首先将情感词典分为通用情感词典与专用情感词典。...构建特定领域情感词典需要利用PMI互信息计算与左右熵来发现所需要新词。...具体方法我们可以添加情感种子词,来计算分好词语料中各个词语与情感种子词互信息度与左右熵,再将互信息度与左右熵结合起来,选择出与情感词关联度最高TopN个词语,将其添加到对应情感词典。...这里可以参考链接link 互信息计算 p(x,y)为两个词一起出现概率 p(x)为词x出现概率 p(y)为词y出现概率 ---- 具体例子:4G, 上网卡,4G上网卡;如果4G词频是2,上网卡词频是...JMX个人博客 www.jmxgodlz.xyz 参考文献: python3实现互信息和左右熵新词发现 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172429

    2.2K30

    如何打造高质量机器学习数据集?这份超详指南不可错过

    点间互信息PMI)主要用于计算词语间语义相似度,基本思想是统计两个词语文本同时出现概率,如果概率越大,其相关性就越紧密,关联度越高。...情感倾向点互信息算法(Semantic Orientation Pointwise Mutual Information, SO-PMI)是将 PMI 方法引入计算词语情感倾向(Semantic Orientation...我们可以利用情感倾向点互信息 SO-PMI计算表情与正向/负向感情词之间情感倾向: ?...感谢 HowNet 情感词典,有 836 个正向情感词和 1254 个负向情感词,由此我们可以计算表情标签情感倾向点互信息。...) 这种神操作就 好 ipython + screen/tmux:分析一些重要数据集统计特性如样本长度分布时,开个 vim 写 python 脚本会很低效,数据集一大的话反复 IO 更是让人无法忍受

    5.9K31

    解读:如何让机器自动答题?

    2 文本信息抽取 给定问句语义分析结果,自动问答系统需要在已有语料库、知识库或问答库匹配相关 信息,并抽取出相应答案。...3 知识推理 自动问答,由于语料库、知识库和问答库本身覆盖度有限,并不是所有问题都能直 接找到答案。这就需要在已有的知识体系,通过知识推理手段获取这些隐含答案。...以下题为例: Q =‘撒贝宁姐妹是’ As=[’涂经纬','撒贝娜','任雪','李思思'] 方案1 简单粗暴型 搜索 Q ,统计 An 搜索结果中出现次数,取次数最高,作为推荐答案。 ?...结果: 涂经纬 0 撒贝娜 4 任雪 0 李思思 0 答案: 撒贝娜 方案2 算法型 分别搜索 Q、An ,统计结果数量,然后计算 PMI 值,取值最高作为推荐答案。 ? 什么是 PMI ?...机器学习里经常会用到 PMI( Pointwise Mutual Information )点间互信息,这个指标来衡量两个事物之间相关,用在自然语言处理,比如计算两个词相关度。 ? ?

    1.3K100

    浅谈用Python计算文本BLEU分数

    通过本教程,你将探索BLEU评分,并使用PythonNLTK库对候选文本进行评估和评分。 完成本教程后,你将收获: BLEU评分简单入门介绍,并直观地感受到到底是什么正在被计算。...如何使用PythonNLTK库来计算句子和文章BLEU分数。 如何用一系列小例子来直观地感受候选文本和参考文本之间差异是如何影响最终BLEU分数。 让我们开始吧。...对计算BLEU分数参考文本数量和质量水平要求意味着不同数据集之间比较BLEU分数可能会很麻烦。 BLEU评分范围是从0到1。很少有翻译得分为1,除非它们与参考翻译完全相同。...累加N-Gram分数 累加分数是指对从1到n所有单独n-gram分数计算,通过计算加权几何平均值来对它们进行加权计算。...具体来说,你学到了: BLEU评分简单入门介绍,并直观地感受到到底是什么正在被计算。 如何使用PythonNLTK库来计算语句和文章BLEU分数。

    34.7K142

    机器翻译之BLEU值

    库对候选文本进行评估和评分 完成本教程后, 你将收获: BLEU 评分简单入门介绍, 并直观地感受到到底是什么正在被计算 如何使用 Python NLTK 库来计算句子和文章 BLEU 分数...即使是一个人类翻译, 也不一定会在一个大约 500 个句子 (也就是 40 个普通新闻报道长度) 测试语料上得 1 分, 一个人类翻译四个参考翻译下得分为 0.3468, 两个参考翻译下得分为...BLEU 分数 NLTK 中提供 BLEU 评分方法允许你计算 BLEU 分数时为不同 n 元组指定权重 这使你可以灵活地计算不同类型 BLEU 分数, 如单独和累加 n-gram 分数 让我们来看一下...本教程, 你探索了 BLEU 评分, 根据机器翻译和其他语言生成任务参考文本对候选文本进行评估和评分 具体来说, 你学到了: BLEU 评分简单入门介绍, 并直观地感受到到底是什么正在被计算...如何使用 Python NLTK 库来计算语句和文章 BLEU 分数 如何使用一系列小例子来直观地感受候选文本和参考文本差异是如何影响最终 BLEU 分数 参考: https://blog.csdn.net

    2.4K41

    如何找到好主题模型量化评价指标?这是一份热门方法总结

    ,而是采用一些其它方式,比如在下游任务表现,或是测试集中表现(混淆度,perplexity)。...team}): PMI:为了了解其他几种方式计算方法,首先要先看一下 PMI 计算方法(如下图所示)。...本方法基本原理是基于滑动窗口,对给定主题词所有单词对(one-set 分割)点态互信息 (point twise mutual information, PMI) 进行计算。 ?...C_npmi:本方法使用归一化点态互信息 (NPMI) ,与 C_uci 很类似,只是将 PMI 换成 NPMI,算是 C_uci 增强版。具体来说,NPMI 计算方法如下图所示。 ?...对于这种直接方法,Jey 使用了以下 4 中方法对主题进行评分: OC(Observed Coherence)-Auto-PMI:对一个主题内计算 PMI计算方法其实就是 PMI,如下图所示: ?

    93520

    机器翻译质量评测算法-BLEU

    表示取n-gram翻译译文和参考译文中出现最小次数,比如上面的1-gram出现最小次数是2. ?...表示取n-gram翻译译文中出现次数,比如上面的1-gram出现次数是7. ok,到这里你基本清楚bleun-gram精度到底是怎么计算了。 上面的计算已经足够好了吗?...如果出现这种短句子,你会发现计算n-gram精度会得很高分,很显然这次得分为1,但实际上它得分应该是比较低。针对翻译译文长度比参考译文要短情况,就需要一个惩罚机制去控制。 惩罚因子 ?...由于随着n-gram增大,总体精度得分是呈指数下降,所以一般N-gram最多取到4-gram。 怎么使用BLEU?...参考文章 机器翻译评测——BLEU算法详解 机器翻译评价指标之BLEU详细计算过程 机器翻译自动评估-BLEU算法详解 浅谈用Python计算文本BLEU分数

    3.9K30

    基于 Python 自动文本提取:抽象法和生成法比较

    上述比率可以解释为我们算法从所有相关信息集合中提取相关信息量,这正是召回(recall)定义,因此Rouge是基于召回。 更多关于如何计算得分例子都在这里。...具有修正N-gram精度 BLEU 修改N-gram精度关键是,一旦模型摘要识别出参考短语/单词,就应该将其视为耗尽。这个想法解决了模型摘要重复/过度生成单词问题。...通过首先找到单个/短语在任何单个引用中出现最大次数来计算修改N-gram精度。此计数成为该单词/短语最大引用计数。...关于BLEU论文链接(见上文)在其修改N-gram精度上有很好例子。 一句话总结:ROUGE和BLEU得分越高,摘要越好。...不幸是,我们发现它生成总结比GensimTextRank和Luhn模型总结信息量少。 此外,LexRank并不总是ROUGE得分击败TextRank 。

    1.9K20

    BERT-flow:bert向量表达是SOTA吗?

    问题:BERT检索语义相似的句子时表现不佳,是因为它带了太少语义信息,还是没有语义信息没有充分利用?如果语义信息足够,那么怎么不额外增加监督任务下,充分利用其中信息?...(x,c)表示x和c之间互信息,表征是x和c共现近似度,而”语义“在数学空间上表达就是共现关系统计表示,因此,词向量和上下文向量点击是可以反应词语和上文问语义相似度。...那么,是否是没有有效利用BERT句向量信息呢?...,然而这些没有语义定义空间使得分布不是凸性,所以可以认为BERT句向量上是语义不平滑(semantically non-smoothing),这导致句向量相似度不一定准确表示句子语义相似度。...[image-20210215135446502]QA问题探索作者通过将此方法应用问题和答案对匹配上,即去计算问题和答案embeedingcosin相似度来预估它们是否相关,QNLI数据集上证明也是有明显提升

    1.4K20
    领券