一.自然语言处理的典型工具

自然语言处理的三项基本技术为单词切分句法分析语义理解

1. TextBlob

TextBlob是自然语言处理的python库。它为常见的自然语言处理提供一个简单地API,例如单词标注、名词短语提取、情感分析、分类、翻译等。
TextBlob安装命令pip install -U textblob
python -m textblob.download_corpora

from textblob import TextBlob
text='I feel happy today. I feel sad.'
blob=TextBlob(text)
#第一句情感分析
first=blob.sentences[0].sentiment
print(first)
#第二句情感分析
second=blob.sentences[1].sentiment
print(second)
#总的
all=blob.sentiment
print(all)
运行结果:
Sentiment(polarity=0.8, subjectivity=1.0)
Sentiment(polarity=-0.5, subjectivity=1.0)
Sentiment(polarity=0.15000000000000002, subjectivity=1.0)

情感极性为0.8,-0.5,0。15,主观性为1.0.情感极性的变化范围为【-1,1】,-1代表完全负面,1代表完全正面。

2. Gensim

Gensim也是一个用于自然语言处理的python库,主要功能是自动提取语义主题。
Gensim可以处理非结构化的数值化文本,是一个通过衡量词组(或更高结构,如整句或文档)模式来挖掘文档语义结构的工具。
安装命令:pip install genism

import jieba
from gensim import corpora
def word_cutting(word):ls=[]for i in word:ll=jieba.lcut(i)ls.append(ll)return ls
documents=['Gensim也是一个用于自然语言处理的python库']
texts=word_cutting(documents)
print(texts)
print(' '.join(texts[0]))
dictionary=corpora.Dictionary(texts)
print(dictionary.token2id)
运行结果:
[['Gensim', '也', '是', '一个', '用于', '自然语言', '处理', '的', 'python', '库']]
Gensim 也 是 一个 用于 自然语言 处理 的 python 库
{'Gensim': 0, 'python': 1, '一个': 2, '也': 3, '处理': 4, '库': 5, '是': 6, '用于': 7, '的': 8, '自然语言': 9}

3. Polyglot

polyglot是功能强大且支持Pipeline(管道流)方式的多语言处理python工具包。
安装命令为:pip install polyglot

二. jieba实现词性标注和关键词抽取

结巴用于自然语言处理的python库,完美支持中文分词。
jieba安装命令为:pip install jieba

1.jieba实现词性标注

import jieba
import jieba.analyse
import jieba.posseg
str='我来到了北京清华大学'
seg_list=jieba.posseg.cut(str)
outstr=''
for x in seg_list:outstr+='{}/{},'.format(x.word,x.flag)
print(outstr)
运行结果:
我/r,来到/v,了/ul,北京/ns,清华大学/nt,

2.基于TF-IDF算法的关键词抽取

jieba关键词提取方法:jieba.analyse.extanct_tags()
jieba.analuse.extanct_tags(sentences,topk=20,withWeight=Flase,allowPOS=())
其中,sentence:代提取文本
topK:返回TF-IDF权重最大的关键词,默认为20
withWeightr:是否一并返回关键词权重值,默认为FLASE
allowPOS:仅包括指定词性的词

import jieba
import jieba.analyse
str='我来到了北京清华大学'
seg_list=jieba.analyse.extract_tags(str)
print(' '.join(seg_list))
运行结果:
清华大学 来到 北京

3.基于TextRank算法的关键词抽取

jieba关键词提取方法:jieba.analyse.textrank()
jieba.analyse.textrank(sentence,topk=20,withWeight=Flase,allowPOS=(‘ns’,‘n’,‘vn’,‘v’))

import jieba
import jieba.analyse
text='线程是程序执行时的最小单位,它是进程的执行流,在多CPU环境下就允许多个线程同时运行。' \'同样多线程也可以实现开发操作,每个请求分配一个线程来处理'
tags=jieba.analyse.textrank(text,withWeight=True)
for x,w in tags:print(x,w)
运行结果:
线程 1.0
操作 0.6174979298762336
分配 0.6169869132378641
请求 0.6150294825657957
允许 0.5754017857185157
进程 0.5357151017749702
开发 0.4739203521546845
单位 0.4730437236292663
程序执行 0.41006124402029
运行 0.3708019296978289
处理 0.33480108226624467
实现 0.3285670222363986
执行 0.2908959635956896
环境 0.2255843975147267

三. Gensim查找相似词

Gensim三大核心概念为:文集(语料)、向量、模型。

import jieba
import jieba.posseg as posseg
from jieba.analyse import textrank,extract_tags
import jieba.finalseg
from gensim import corpora,models,similarities#1.jiaba中文词性标注
text="我爱天安门"
poss=posseg.lcut(text)
print(poss)#2.jiaba关键词提取
text1="我来到了北京清华大学"
tags=extract_tags(text1,5)
trank=textrank(text1,6,withWeight=True)
print(" ".join(tags))
print(trank)# 3.gensim三大核心:语料、向量、模型
documents=['物联网是新一代信息技术的重要组成部分','也是信息化时代的重要发展阶段']
texts=[jieba.lcut(w) for w in documents]
# 将文本生成语料库
dictionary=corpora.Dictionary(texts)
print(dictionary.token2id)
#文档表示成向量
bow_corpus=[dictionary.doc2bow(text) for text in texts]
print(bow_corpus)
#模型
tfidf=models.TfidfModel(bow_corpus)
print(tfidf)
运行结果:
[['物', '联网', '是', '新一代', '信息技术', '的', '重要', '组成部分'], ['也', '是', '信息化', '时代', '的', '重要', '发展', '阶段']]
{'信息技术': 0, '新一代': 1, '是': 2, '物': 3, '的': 4, '组成部分': 5, '联网': 6, '重要': 7, '也': 8, '信息化': 9, '发展': 10, '时代': 11, '阶段': 12}
[[(0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1)], [(2, 1), (4, 1), (7, 1), (8, 1), (9, 1), (10, 1), (11, 1), (12, 1)]]
TfidfModel(num_docs=2, num_nnz=16)

gensim查找相似度

from gensim import corpora
import jieba
from gensim import models
import gensim
from gensim import similarities
l1=['你的名字是什么','你今年几岁了','你有多高,你年龄多大','你体重多少']
a='你年龄多大了'
all_doc_list=[]
for doc in l1:doc_list=[word for word in jieba.cut(doc)]all_doc_list.append(doc_list)print(all_doc_list)
doc_test_list=[word for word in jieba.cut(a)]
print(doc_test_list)
#制作语料库
dictionary=corpora.Dictionary(all_doc_list)
print(dictionary.token2id)#向量
corpus=[dictionary.doc2bow(doc) for doc in all_doc_list]
print(corpus)
#寻找相似度的分词列表做成词料库
doc_test_vec=dictionary.doc2bow(doc_test_list)
print('doc_test_vec',doc_test_vec)#模型
lsi=models.TfidfModel(corpus)
print("lsi=",lsi)#语料库训练结果
print(lsi[corpus])
print(lsi[doc_test_vec])index=similarities.SparseMatrixSimilarity(lsi[corpus],num_features=len(dictionary.keys()))
print("index=",index)
sim=index[lsi[doc_test_vec]]
print("sim=",sim)cc=sorted(enumerate(sim),key=lambda item:item[1],reverse=True)
print(cc)
text=l1[cc[0][0]]
print(a,text)

四. TextBlob

1.词性标注
词性就是词的分类,TextBlob中的属性tags表示词性。

from textblob import TextBlob
str='python is a high-level,general-purpose programming language.'
str1=TextBlob(str)
print(str1.tags)

2.英文情感分析
TextBlobs的属性sentiment进行情感分析,返回一个元组sentiment(polarity,subjectivity)
其中,priority:范围为【-1,1】,-1表示消极,1表示积极
subjectivity:范围为【0,1】,0表示客观,1表示主观。

from textblob import TextBlob
str2=TextBlob('I am glad')
print(str2.sentiment)
str3=TextBlob('I am sad')
print(str3.sentiment)

3.分句提取
利用TextBlob的属性sentences可以进行分句提取,返回一个句子列表。

from textblob import TextBlob
str4=TextBlob('I am glad.''I am sad.''I am complex.')
print(str4.sentences)

4.中文情感分析

利用TextBlob进行中文情感分析,需要安装Snownlp库,安装命令pip install snownlp

from snownlp import SnowNLP
text='我今天很快乐。我今天很悲伤。'
s=SnowNLP(text)
print(SnowNLP(s.sentences[0].sentiments))
print(SnowNLP(s.sentences[1].sentiments))

五. CountVectorizer和TfidfVectorizer

1.CountVectorizer特征提取

from sklearn.feature_extraction.text import TfidfVectorizer,CountVectorizer
texts=['我 爱 北京','北京 是 首都','中国 北京']
cv=CountVectorizer()
cv_fit=cv.fit_transform(texts)
print(cv.vocabulary_)
print(cv_fit)
print(cv_fit.toarray())
{'北京': 1, '首都': 2, '中国': 0}(0, 1)  1(1, 1) 1(1, 2) 1(2, 1) 1(2, 0) 1
[[0 1 0][0 1 1][1 1 0]]

2.TfidfVectorizer特征提取

from sklearn.feature_extraction.text import TfidfVectorizer,CountVectorizer
texts=['我 爱 北京','北京 是 首都','中国 北京']
cv=TfidfVectorizer()
cv_fit=cv.fit_transform(texts)
print(cv.vocabulary_)
print(cv_fit)
print(cv_fit.toarray())
{'北京': 1, '首都': 2, '中国': 0}(0, 1)  1.0(1, 2)   0.8610369959439764(1, 1)    0.5085423203783267(2, 0)    0.8610369959439764(2, 1)    0.5085423203783267
[[0.         1.         0.        ][0.         0.50854232 0.861037  ][0.861037   0.50854232 0.        ]]

3. tfidf计算单词的关联度

import numpy as np
from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer#文本
text=np.array(["I come to beijing","beijing is capital","I like beijing"])
#文本转化为特征向量
count=CountVectorizer(ngram_range=(1,1))
#文本进行训练
bag=count.fit_transform(text)
print(count.get_feature_names())
print(count.vocabulary_)
print(bag)
print(bag.toarray())#tfidf计算单词的关联度
tfidf=TfidfTransformer()
trans=tfidf.fit_transform(bag)
print(trans)
print(trans.toarray())

自然语言典型工具TextBlob、Gensim、Polyglot,关键词抽取(jieba、TF-IDF、textrank)和特征提取(CountVectorizer、TfidfVectorizer)相关推荐

  1. 自然语言处理实战项目2-文本关键词抽取和关键词分值评估

    大家好,我是微学AI,今天给大家带来自然语言处理实战项目2-文本关键词抽取和关键词分值评估.关键词抽取是自然语言处理中的重要任务,也是基础任务. 一.关键词抽取传统方法 1.基于统计的方法: 基于统计 ...

  2. 自然语言处理学习笔记3:关键词抽取

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 简介 关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽 ...

  3. 关键词提取算法—TF/IDF算法

    关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...

  4. 使用lingpipe自然语言处理包进行文本分类/** * 使用 lingpipe的tf/idf分类器训练语料 * * @author laigood */ public class trai

    /**  * 使用 lingpipe的tf/idf分类器训练语料  *   * @author laigood  */ public class traintclassifier { //训练语料文件 ...

  5. NLP_learning 中文基本任务与处理(分词、停用词、词性标注、语句依存分析、关键词抽取、命名实体识别)介绍、jieba工具库

    文章目录 1.分词 2.停用词和N-gram 停用词 N-gram 3. 更多任务(词性标注.依赖分析.NER.关键词抽取) 词性标注 句法依存分析 命名实体识别 关键词抽取 4. jieba工具库使 ...

  6. python自然语言处理库_Python自然语言处理工具库(含中文处理)

    自然语言处理(Natural Language Processing,简称 NLP),是研究计算机处理人类语言的一门技术.随着深度学习在图像识别.语音识别领域的大放异彩,人们对深度学习在 NLP 的价 ...

  7. NLP自然语言处理工具小结

    20220331 https://zhuanlan.zhihu.com/p/79202151 BM25 https://github.com/v1shwa/document-similarity wo ...

  8. 乱炖“简书交友”数据之代码(2):关键词抽取、Word2Vec词向量

    继续更新出来本系列的代码:乱炖数据之2700余篇"简书交友"专题文章数据的花式玩法 在乱炖"简书交友"数据之代码(1)一文里,主要涉及结构化数据的分析,文本挖掘 ...

  9. jieba简易教程:分词、词性标注、关键词抽取

    jieba分词 "Jieba" (Chinese for "to stutter") Chinese text segmentation: built to b ...

最新文章

  1. Ubuntu修改IP地址和MAC地址
  2. MongoDB对文档的操作
  3. 基于visual Studio2013解决C语言竞赛题之1085相邻之和素数
  4. Linux服务器Zookeeper+Dubbo环境搭建
  5. Python-OpenCV 处理图像(五):图像中边界和轮廓检测
  6. 测试教程网.unittest教程.2. 基本用法
  7. JS组件系列——表格组件神器:bootstrap table
  8. SEO:如何做好软文推广
  9. flutter打包的app有多大_前端大势所趋---Flutter 这篇文章会让你行动起来
  10. Java中的线程协作之Condition
  11. js一行四个 超过自动换行_干货!零基础学JavaScript要掌握的四个基本常识
  12. POJ 1873 The Fortified Forest
  13. C#AJAX 文件上传
  14. 宽度学习系统(BLS)的原理、变体形式及当前应用(随时更新......)
  15. 智慧交通信息服务平台产品解决方案
  16. 87键盘怎么用小键盘功能
  17. 【转载】office2021
  18. No compiler is provided in this environment. Perhaps you are run
  19. I2C-两线外设接口-用于ArduinoNano, uno ,Mega2560
  20. AXI Quad SPI读写Flash做远程升级

热门文章

  1. 向上生长读书笔记(二)
  2. 国防科技大学成功研制新型可编程光量子计算芯片
  3. 网页嵌入iframe底部的空白
  4. vue3 + elementPlus 上传图片
  5. Tryhackme-Advanced Exploitation
  6. 恶意代码分析_00_入手资料
  7. SQL Server 仿当当网书店管理系统数据库的设计与实现
  8. 【面试现场】为什么要分稳定排序和非稳定排序?
  9. ImageIo外部字体导入
  10. mysql查看死锁并杀掉_查看当前进程,或死锁进程,并能自动杀掉_mysql