github地址

import nltk
nltk.download('wordnet_ic')
from nltk.corpus import wordnet as wn
from nltk.corpus import wordnet_icthreshold = 0.6  # treshold for wup
jcnTreshold = 0.09  # jcn
pathTeshold = 0.1  # path
brown_ic = wordnet_ic.ic('ic-brown.dat')  # load the brown corpus
lexical_chains = []  # empty list to hold all the chains
dictionary = {}  # empty dictionart to hold the count of each word encounteredclass Chain():def __init__(self, words, senses, count=0):self.words = set(words)self.senses = set(senses)dictionary[words[0]] = 1  # initialize counterdef addWord(self, word):if (len(self.words.intersection([word])) > 0):dictionary[word] += 1else:dictionary[word] = 1self.words.add(word)def addSense(self, sense):self.senses.add(sense)def getWords(self):return self.wordsdef getSenses(self):return self.getSensesdef incCount(self):self.count += 1def add_word(word):maximum = 0maxJCN = 0flag = 0for chain in lexical_chains:  # for all chains that are presentfor synset in wn.synsets(word):  # for all synsets of current wordfor sense in chain.senses:  # for all senses of the current word in current element of the current chainsimilarity = sense.wup_similarity(synset)  # using wup_similarityif (similarity >= maximum):if similarity >= threshold:# print word, synset, sense, sense.jcn_similarity(synset, brown_ic)JCN = sense.jcn_similarity(synset, brown_ic)  # using jcn_similarityif JCN >= jcnTreshold:if sense.path_similarity(synset) >= 0.2:  # using path similarityif JCN >= maxJCN:maximum = similaritymaxJCN = JCNmaxChain = chainflag = 1if flag == 1:maxChain.addWord(word)maxChain.addSense(synset)returnlexical_chains.append(Chain([word], wn.synsets(word)))fileName = input("Enter file path + name, if file name is 'nlp.txt', type 'nlp' \n \n")
fileName += ".txt"
print("\n\n")
# fileName = "nlp.txt" #输入文件名
File = open(fileName)  # open file
lines = File.read()  # read all lines#is_noun = lambda x: True if (pos == 'NN' or pos == 'NNP' or pos == 'NNS' or pos == 'NNPS') else False
nouns = [word for (word, pos) in nltk.pos_tag(nltk.word_tokenize(lines)) if (pos == 'NN' or pos == 'NNP' or pos == 'NNS' or pos == 'NNPS')]  # extract all nounsprint(nouns)
#输出所以名词
#NN     Noun, singular or mass 常用名词 单数形式
#NNS     Noun, plural  常用名词 复数形式
#NNP     Proper noun, singular  专有名词,单数形式
#NNPS     Proper noun, plural  专有名词,复数形式for word in nouns:add_word(word)# print all chains
for chain in lexical_chains:#print(chain)print(", ".join(str(word + "(" + str(dictionary[word]) + ")") for word in chain.getWords()))from collections import Counter
result = dict(Counter(nouns))
print(result)
print ([key for key,value in result.items() if value > 1])
print ({key:value for key,value in result.items() if value > 1})

#输入文件名
#查找所有名词,并输出名词列表(有重复)

#源代码的词汇链

#聚合名词列表,并输出频率大于1的单词。

python lexical chain相关推荐

  1. Python Itertools.chain()用法【将一组迭代对象串联起来,形成一个更大的迭代器】

    它是一个需要一系列可迭代对象并返回一个可迭代对象的函数.它将所有可迭代对象组合在一起,并生成一个可迭代对象作为输出. 场景一:  chain()可以把一组迭代对象串联起来,形成一个更大的迭代器: &g ...

  2. Python——itertools.chain.from_iterable将多个迭代器连接成一个统一的迭代器的最高效的方法

    1 致谢 感谢网友"-柚子皮-"的帮助, 原文链接如下: https://blog.csdn.net/pipisorry/article/details/45171451 感谢 P ...

  3. Python itertools chain

    v1 = [11,22,33] v2 = [44,55,66]new = chain(v1,v2) for item in new:print(item) from itertools import ...

  4. 合并多个python list以及合并多个 django QuerySet 的方法

    尊重原文作者,该文转载于: http://www.yihaomen.com/article/python/533.htm 在用python或者django写一些小工具应用的时候,有可能会遇到合并多个l ...

  5. 湖北科技学院计算机科学院,钱涛 - 湖北科技学院 - 计算机科学与技术学院

    个人简介 教育经历 2012/06-至今,武汉大学,计算机学院,工学博士 2003/09-2006/06,湖北工业大学,计算机学院,工学硕士 1993/09-1995/06, 荆州教育学院,数学系,专 ...

  6. 马尔可夫链的定义、举例和应用

    马尔可夫链通常用来建模排队理论和统计学中的建模,还可作为信号模型用于熵编码技术,如算法编码. 定义 马尔可夫链是满足马尔可夫性质的随机过程.马尔可夫链描述了一种状态序列,其每个状态值取决于前面有限个状 ...

  7. WordNet发展概况

    · 关于WordNet的不成熟的想法可以追溯到20多年前, 而这一想法开始逐渐具体化和清晰化则是1985年后才开始的. 从85年开始,WordNet作为一个知识工程全面展开.不过, 当时的WordNe ...

  8. WordNet 介绍(ICL-PKU)

    WordNet 介绍(ICL-PKU) 一 WordNet发展概况 · 关于WordNet的不成熟的想法可以追溯到20多年前,而这一想法开始逐渐具体化和清晰化则是1985年后才开始的.从85年开始,W ...

  9. 篇章分析的理论和应用

    篇章分析的理论和应用 一.篇章分析的理论 衔接性分析 衔接性:篇章范围内词汇之间的关联. 一个成分的含义依赖于另一成分的解释 连贯性:句子层⾯面的意义关联 篇章的衔接性可以分成两类,前者是借助一系列的 ...

最新文章

  1. java当前路径和相对路径相关的疑惑
  2. Python获取list中指定元素的索引
  3. iframe的src怎么携带参数_Java 爬虫遇到需要登录的网站,该怎么办?
  4. 栈和队列应用之数制转换
  5. Vue精确到小数点后两位
  6. CSS3 3D transform变换
  7. 权限管理系统之用户管理
  8. Django:ORM基本操作-CRUD,管理器对象objects,----->聚合查询、原生数据库操作
  9. 将springboot打包成的jar文件做成windows服务
  10. java9什么时候公布_Java 9正式版有可能被推迟到9月21号发布
  11. 【uTenux实验】中断处理
  12. android交叉编译libxml2,libxml2 ARM 交叉编译
  13. curl测试post请求
  14. Jmeter之连接MySQL数据库操作
  15. 奥创软件研究院 张启程同学 受邀成为PostgreSQL 2018 中国技术大会分享嘉宾
  16. 马铃薯淀粉生产线的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总
  18. 安卓上哔哩哔哩视频的导出
  19. [转]频谱、幅度谱、功率谱和能量谱
  20. NBU OJ1211:一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。

热门文章

  1. 计算机的数字系统论文,数字系统设计论文..doc
  2. VR风暴将至虚拟现实的中国故事该怎么写?
  3. Linux-进程、任务和作业管理
  4. 中科软测试面试题2019_2019无锡中科软软件开发面试
  5. 《统计自然语言处理》知识结构总结
  6. 如何用HTML5做虎牙直播,怎样做游戏主播 虎牙直播简明使用教程
  7. Skywalking源码分析【agent探针篇】
  8. 调试助手DebugLeader
  9. acm c语言训练 数不同的单词数
  10. ubuntu + apache +端口目录设置