记录一下代码:

"""
__author__:shuangrui Guo
__description__:
"""
import sys
import nltk
import json
from tqdm import tqdm
#多进程的包
import multiprocessing
import argparse
import os
import re
SUFFIX_NLTK = '__nltk.json'
#清洗文本
def clean_text(text):text = re.sub(r'[^\x00-\x7F]+',' ',text)text = re.sub(r"([.,!:?()])",r" \1 ",text)text = re.sub(r"\s{2,}"," ",text)text = text.replace("-"," ")return text
#获取文件行数的函数
def get_line_count(inFile):lines = 0with open(inFile,'r') as f:while f.readline():lines+=1return lines
#跳过所有的单个词,默认是True
def get_nps_from_tree(tree, words_original, attachNP=False, skip_single_word=True):nps = []st = 0for subtree in tree:if isinstance(subtree, nltk.tree.Tree):if subtree.label() == 'NP':np = subtree.leaves()ed = st + len(np)if not skip_single_word or len(np) > 1:nps.append({'st': st,'ed': ed,'text': ' '.join(words_original[st:ed])})if attachNP:nps[-1]['np'] = npst += len(subtree.leaves())else:st += 1return nps
def validate_nps(nps, words_original):validated_nps = []for np in sorted(nps, key=lambda x:x['st']):st = np['st']ed = np['ed']token_span = words_original[st:ed]# 'A polynomial time algorithm for the Lambek calculus with brackets of  bounded order'if ' '.join(token_span).strip() != np['text'].strip():print(' '.join(token_span))print(np)return validated_npsvalidated_nps.append(np)return nps
def get_nps_nltk_raw(doc):# 预先定义的分块语法,具体含义不清楚GRAMMAR = r"""NBAR:{<NN.*|JJ>*<NN.*>}  # Nouns and Adjectives, terminated with Nouns(名次和形容词,并且以名词结尾)NP:{<NBAR>}{<NBAR><IN><NBAR>}  # Above, connected with in/of/etc..."""# 定义语法解析器_PARSER = nltk.RegexpParser(GRAMMAR)doc = clean_text(doc)#对文档使用空格切分words_original = nltk.word_tokenize(doc)#words_original = doc.split(' ')try:parse_tree = _PARSER.parse(nltk.pos_tag(words_original))passexcept Exception as e:import ipdb; ipdb.set_trace()passnps = get_nps_from_tree(parse_tree, words_original)return nps
#读入与写出文件
def writeToJson(inFile, outFile):#分别读入文件,与写出文件with open(inFile, 'r') as fin, open(outFile, 'w') as fout:total = get_line_count(inFile)for line in tqdm(fin, total=total):doc = line.strip('\r\n')#对每一行进行处理if doc:nps = get_nps_nltk_raw(doc)else:nps = []fout.write(json.dumps(nps))fout.write('\n')if __name__ == '__main__':inFile = "./patent_abstract.txt"outFile = inFile + SUFFIX_NLTKwriteToJson(inFile, outFile)

英文文本关键词抽取——使用NLTK进行关键词抽取相关推荐

  1. 英文文本分词之工具NLTK

    英文文本分词之工具NLTK 安装NLTK 停用词和标点符号包放置 验证 安装NLTK pip install nltk 分词需要用到两个包:stopwords和punkt,需要下载: import n ...

  2. 英文文本分词处理(NLTK)

    文章目录 1.NLTK的安装 2.NLTK分词和分句 3.NLTK分词后去除标点符号 4.NLTK分词后去除停用词 5.NLTK分词后进行词性标注 6.NLTK分词后进行词干提取 7.NLTK分词后进 ...

  3. python 英语分词_基于Python NLTK库进行英文文本预处理

    文本预处理是要文本处理成计算机能识别的格式,是文本分类.文本可视化.文本分析等研究的重要步骤.具体流程包括文本分词.去除停用词.词干抽取(词形还原).文本向量表征.特征选择等步骤,以消除脏数据对挖掘分 ...

  4. 英文文本关系抽取(fine-tune Huggingface XLNet)

    本文主要是基于英文文本关系抽取比赛,讲解如何fine-tune Huggingface的预训练模型,同时可以看作是关系抽取的一个简单案例 数据预览 训练数据包含两列.第一列是文本,其中<e1&g ...

  5. 英文文本分类——电影评论情感判别

    目录 1.导入所需的库 2.用Pandas读入训练数据 3.构建停用词列表数据 4.对数据做预处理 5.将清洗的数据添加到DataFrame里 6.计算训练集中每条评论数据的向量 7.构建随机森林分类 ...

  6. 使用apriori对英文文本进行频繁项挖掘

    使用apriori对英文文本进行频繁项挖掘 知识储备 频繁项集,关联性分析 apriori算法 运行环境 python3.6+ 数据及运行 数据 预处理 apriori算法进行关联性分析 结果及分析 ...

  7. Python编程实例03——对英文文本进行分词

    系列目录 上一篇:Python编程实例02--实现斐波那契数列 文章目录 系列目录 前言 一.编程要点 1.split()函数 a.单个分隔符分割 b.多个分割符分割 2.sorted()函数与sor ...

  8. readability: 英文文本数据可读性库

    readability文本可读性的公式最初都是为英语开发而来,所以目前仅支持英文文本数据. 文档 https://pypi.org/project/readability/ 安装 pip instal ...

  9. 利用文本相似度进行英文文本分类(C++实现)

    利用文本相似度进行英文文本分类(C++实现).仅用于应付课程小作业. 代码在链接:利用文本相似度进行英文文本分类(C++实现)-C++文档类资源-CSDN下载 文本分类是自然语言处理中比较常见且重要的 ...

最新文章

  1. markdown数学公式全集
  2. hdoj--2534--Score(gcd)
  3. 【邮件】生产数据库优化第一步:重建索引
  4. 从这篇文章可以看出有些错误,由此可以看出,还是看msdn要好的多,这是我的经验
  5. 分布式从mysql查数据_技术分享 | 从库数据的查找和参数 slave_rows_search_algorithms...
  6. 关闭微信朋友圈的第二天的感悟
  7. if中加return_答应我,别再 if/else 走天下了可以吗?
  8. div覆盖div DIV相互重叠如何解决
  9. VS和IIS的一些问题
  10. ansible安装与配置文件
  11. 关系数据库设计理论--3NF
  12. 错误及原因推测:sysdeps/x86_64/multiarch/strstr-sse2-unaligned.S: 没有那个文件或目录
  13. 码农小汪-非常不安逸 怎么我写的注解没有自动给我生成时间呢!javadoc 配置起来非常的简单
  14. 我的梦想是成为一名计算机程序员英语怎么说,我梦想将来成为一名程序员英语作文...
  15. 自动驾驶公司如何打造产品市场体系
  16. 使用kubeadm快速部署一套K8S集群
  17. WPF定制实现自己的分页控件并配合DataGrid使用
  18. 【自动驾驶】Frenet坐标系与Cartesian坐标系(二)
  19. Anaconda 虚拟环境:pyuic之找不到模块之最后的希望(最新)
  20. 图像的灰度化灰度值的读取Matlab

热门文章

  1. HTML(Basic) Chapter4(Pink) 综合案例小米商城产品模块
  2. Hive 数据同步ClickHouse
  3. r510服务器开机无显示,联想B320i开机无显示维修案例
  4. C#使用西门子S7 协议读写PLC DB块
  5. S5pv210 出现一个离奇wince6.0 activesync 软件连接问题
  6. Jenkins:設定一次後就很方便的排程工具
  7. 【微信小程序】微信小程序提示Do not have handler in component
  8. excel计算二元线性回归_用Excel做回归分析
  9. win7计算机无法识别分辨率,win7系统无法调整分辨率显示灰色的详细方案
  10. Java当中的IO流-时间api(下)-上