首页 > 其他分享 >【自然语言处理】中文语义消歧实验代码

【自然语言处理】中文语义消歧实验代码

时间:2024-06-02 16:33:32浏览次数:27  
标签:count word 语义 idf dict tf 自然语言 消歧 sent

本实验以句子为单位进行语义消歧,即输入一句话,识别该句子中某个歧义词的含义。
本次实验使用的算法比较简单,是以TF_IDF为权重的频数判别
代码如下:


import os
import jieba
from math import log2
# 读取每个义项的语料
def read_file(path):
    with open(path, 'r', encoding='utf-8') as f:
        lines = [_.strip() for _ in f.readlines()]
        return lines


# 对示例句子分词
# sent = '赛季初的时候,火箭是众望所归的西部决赛球队。'
'''
***写入代码***填入对应代码确定要消歧的句子和对应的词
'''
# 去掉停用词
stopwords = ['我', '你', '它', '他', '她', '了', '是', '的', '啊', '谁', '什么','都',\
             '很', '个', '之', '人', '在', '上', '下', '左', '右', '。', ',', '!', '?']
'''
***写入代码***使用遍历的方式得到去掉停用词后的sent_cut
'''
# 计算其他词的TF-IDF以及频数
wsd_dict = {}
for file in os.listdir('.'):
    if wsd_word in file:
        wsd_dict[file.replace('.txt', '')] = read_file(file)
# 统计每个词语在语料中出现的次数
tf_dict = {}
for meaning, sents in wsd_dict.items():
    tf_dict[meaning] = []
    for word in sent_cut:
        word_count = 0
        for sent in sents:
            example = list(jieba.cut(sent, cut_all=False))
            word_count += example.count(word)
        if word_count:
            tf_dict[meaning].append((word, word_count))
idf_dict = {}
for word in sent_cut:
    document_count = 0
    for meaning, sents in wsd_dict.items():
        for sent in sents:
            if word in sent:
                document_count += 1
    idf_dict[word] = document_count
# 输出值
total_document = 0
for meaning, sents in wsd_dict.items():
    total_document += len(sents)
# 计算tf_idf值
mean_tf_idf = []
for k, v in tf_dict.items():
    print(k+':')
    tf_idf_sum = 0
    for item in v:
        word = item[0]
        tf = item[1]
        tf_idf = item[1]*log2(total_document/(1+idf_dict[word]))
        tf_idf_sum += tf_idf
        print('%s, 频数为: %s, TF-IDF值为: %s'% (word, tf, tf_idf))
    mean_tf_idf.append((k, tf_idf_sum))
sort_array = sorted(mean_tf_idf, key=lambda x:x[1], reverse=True)
true_meaning = sort_array[0][0].split('_')[1]
print('\n经过词义消岐,%s在该句子中的意思为 %s .' % (wsd_word, true_meaning))

相关素材:

【素材】火箭_NBA职业篮球队.txt

【素材】火箭_燃气推进装置.txt

标签:count,word,语义,idf,dict,tf,自然语言,消歧,sent
From: https://www.cnblogs.com/mllt/p/18227252/py_ai_NLP_zwyyxqsy

相关文章

  • 神经网络应用场景——自然语言处理
    神经网络在自然语言处理(NLP)领域的应用场景非常丰富多样,以下是几个典型的应用场景:文本分类:神经网络模型,如卷积神经网络(CNN)和循环神经网络(RNN)及其变体(如LSTM、GRU),被广泛用于文本分类任务,如情感分析、垃圾邮件过滤、新闻分类等。这些模型能够自动学习文本中的特征,并准确地将......
  • 【ACM出版,多高校单位支持 |人工智能等计算机领域 ei 会议,EI Compendex, Scopus检索】2
    2024人工智能与自然语言处理国际学术会议(AINLP2024)将于2024年7月19-21日在中国·珠海召开,该会议作为第四届人工智能、自动化与高性能计算国际会议(AIAHPC2024)分会场召开。本次会议主要围绕“人工智能与自然语言处理”的最新研究展开,旨在荟聚世界各地该领域的专家、学者、研究......
  • (阅读笔记)TensorFlow自然语言处理 ((澳)图珊·加内格达拉)
    链接:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoTensorFlow与NLP概述:介绍了TensorFlow框架和NLP的基本概念,以及两者相结合的重要性。TensorFlow基础:详细讲解了TensorFlow的安装、配置以及基本使用方法,为后续的NLP应用打下基础。NLP任务与数据:概述了NLP中的......
  • 大模型最新黑书:大模型应用解决方案: 基于GPT-3、ChatGPT、GPT-4等Transformer架构的自
    今天给大家推荐一本丹尼斯·罗斯曼(DenisRothman)编写的关于大语言模型(LLM)权威教程<<大模型应用解决方案>基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理>!Google工程总监AntonioGulli作序,这含金量不用多说,在这里给大家强烈推荐一下这本黑书,下面直接开始介绍!......
  • (读后总结)深度解析机器学习(全6册)萃取自然语言与智能图像处理的经验 (卡蒂克·雷迪·
    链接:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso机器学习基础:介绍了机器学习的基本概念、分类以及发展历程,为后续章节奠定了理论基础。深度学习原理:详细讲解了深度学习的原理、架构以及优化方法,为自然语言处理和图像处理提供了强大的技术支持。自然语言处理......
  • UML建模中的 依赖、关联、聚合、组合 这四个语义比较难区分。
    详细的UML建模参考如下:UML建模依赖:Usesa。这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如类B作为参数被类A在某个method方法中使用;关联:Hasa。这种拥有关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方......
  • 计算机语义网络SCI期刊,中科院2区,对国人友好!
    一、期刊名称JournalofWebSemantics二、期刊简介概况期刊类型:SCI学科领域:计算机科学影响因子:2.5中科院分区:2区三、期刊征稿范围《网络语义学杂志》是一本跨学科期刊,基于对各个学科领域的研究和应用,有助于开发知识密集型和智能服务Web。这些领域包括:知识技术,本......
  • python 自然语言处理模块
    Python中有几个流行的自然语言处理(NLP)模块,这些模块提供了广泛的工具和库,用于文本分析、处理和理解。以下是一些广泛使用的NLP模块:NLTK(NaturalLanguageToolkit)NLTK是Python中最著名的NLP库之一,它提供了文本处理的丰富工具,包括分词、词性标注、句法分析、语义推理等。网......
  • 自然语言处理第一次实验结果
    C:\Users\漫卷\AppData\Local\Programs\Python\Python38\python.exeC:\Users\漫卷\Desktop\作业\NLP\first_try\Ch03ProcessingText\3.1_cutting_chinese_words_2.pyBuildingprefixdictfromthedefaultdictionary...LoadingmodelfromcacheC:\Users\漫......
  • 如何写好Simulation证明(一): 语义安全
    密码学中很多证明需要用到Simulation,尤其是ZK,MPC等等.对于初学者来说,涉及Simulation的证明往往不容易理解,更别说自己独立证明,所以有必要学习一下如何写这样的证明.文章主要参考YehudaLindell的讲义:Howtosimulateit.1.Introduction什么是Simulation?中文翻译......