中文自然语言处理
糯米君_
算法工程师
展开
-
中文自然语言处理--词向量fasttext模型简单使用
FastText 是 facebook 开源的一个词向量与文本分类工具,模型简单,训练速度非常快。FastText 做的事情,就是把文档中所有词通过 lookup table 变成向量import fasttext# fasttext 包有两个主要用例:单词表示学习 和 文本分类# 为了学习单词向量,我们可以使用 fasttext.skipgram 和 fasttext.cbow 功能# skipgram modelmodel = fasttext.train_unsupervised('./原创 2021-04-10 15:31:02 · 1142 阅读 · 0 评论 -
中文自然语言处理--基于fasttext中文短文本分类
FastText 是 facebook 开源的一个词向量与文本分类工具,模型简单,训练速度非常快。FastText 做的事情,就是把文档中所有词通过 lookup table 变成向量,取平均后直接用线性分类器得到分类结果。# 导入fasttext模块import fasttext# 以cooking.stackexchange.txt为训练集训练模型modelmodel = fasttext.train_supervised(input='./fasttext-data/data_train.t原创 2021-04-10 15:29:10 · 1133 阅读 · 1 评论 -
中文自然语言处理--基于xgboost中文短文本分类
kaggle、阿里天池等数据科学比赛经常会用到的大杀器 XGBoost,来实战文本分类 。import randomimport jiebaimport pandas as pdimport numpy as npfrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.model_selection import train_test_splitimport xgboost as xgb# 整个过程分为原创 2021-04-10 15:24:15 · 1042 阅读 · 0 评论 -
中文自然语言处理--简单实现 Neo4j 的 Python 操作(py2neo库)
安装 Py2neo。Py2neo 的安装过程非常简单:pip install py2neo例子:# 引入 Node 和 Relationship 对象from py2neo.data import Node, Relationship# 创建 a 和 b 节点对象a = Node("Person", name="Alice")b = Node("Person", name="Bob")# 匹配 a 和 b 之间的工作雇佣关系ab = Relationship(a, "KNOWS", b原创 2021-04-06 23:33:20 · 248 阅读 · 0 评论 -
中文自然语言处理--基于CRF的中文句法依存分析模型实现
句法分析是自然语言处理中的关键技术之一,其基本任务是确定句子的句法结构或者句子中词汇之间的依存关系。主要包括两方面的内容,一是确定语言的语法体系,即对语言中合法句子的语法结构给予形式化的定义;另一方面是句法分析技术,即根据给定的语法体系,自动推导出句子的句法结构,分析句子所包含的句法单位和这些句法单位之间的关系。实战:通过清华大学的句法标注语料库,实现基于 CRF 的中文句法依存分析模型1.数据预处理:给定的语料,在模型中,我们不能直接使用,通过一个 Python 脚本 get_parser_tra原创 2021-04-04 10:49:21 · 961 阅读 · 2 评论 -
中文自然语言处理--依存句法分析标注关系
依存关系的五条公理,分别如下:1.一个句子中只有一个成分是独立的;2.句子的其他成分都从属于某一成分;3.任何一个成分都不能依存于两个或两个以上的成分;4.如果成分 A 直接从属成分 B,而成分 C 在句子中位于 A 和 B 之间,那么,成分 C 或者从属于 A,或者从属于 B,或者从属于 A 和 B 之间的某一成分;5.中心成分左右两边的其他成分相互不发生关系。依存句法分析标注关系(共14种)及含义如下所示:原文:https://soyoger.blog.csdn.net/article原创 2021-04-02 00:44:15 · 1633 阅读 · 0 评论 -
中文自然语言处理--语义依存关系
语义依存关系分为三类:主要语义角色,每一种语义角色对应存在一个嵌套关系和反关系;事件关系,描述两个事件间的关系;语义依附标记,标记说话者语气等依附性信息。原文:https://soyoger.blog.csdn.net/article/details/108729396...原创 2021-04-02 00:40:42 · 1107 阅读 · 0 评论 -
中文自然语言处理--Pyhanlp 实现依存句法分析
依存句法(Dependency Parsing, DP)通过分析语言单位内成分之间的依存关系揭示其句法结构。直观来讲,依存句法的目的在于分析识别句子中的“主谓宾”、“定状补”这些语法成分,并分析各成分之间的关系。from pyhanlp import *sentence = "徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"print(HanLP.parseDependency(sentence))# a:附加写方式打开,不可读;a+: 附加读写方式打开f = open("./re原创 2021-04-02 00:37:35 · 1647 阅读 · 1 评论 -
中文自然语言处理--基于 CRF (条件随机场)的中文命名实体识别模型实现
条件随机场(Conditional Random Fields,简称 CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用。其准确的数学语言描述为:设 X 与 Y 是随机变量,P(Y|X) 是给定 X 时 Y 的条件概率分布,若随机变量 Y 构成的是一个马尔科夫随机场,则称条件概率分布 P(Y|X) 是条件随机场。更详细介绍可以参考:https://blog.csdn.net/dcx_abc/article/details/78319246https://w原创 2021-03-31 23:34:14 · 1649 阅读 · 1 评论 -
中文自然语言处理--jieba 进行命名实体识别和提取
通过简单的 jieba 分词然后根据词性获取实体对象import jiebaimport jieba.analyseimport jieba.posseg as posg# 使用 jieba 进行词性切分,allowPOS 指定允许的词性,这里选择名词 n 和地名 nssentence = u'''上线三年就成功上市,拼多多上演了互联网企业的上市奇迹,却也放大平台上存在的诸多问题,拼多多在美国上市。'''kw = jieba.analyse.extract_tags(sentence, top原创 2021-03-30 00:14:20 · 6761 阅读 · 0 评论 -
中文自然语言处理--pyhanlp 进行命名实体识别和提取
通过简单的pyhanlp 分词然后根据词性获取实体对象from pyhanlp import *# 词性切分sentence = u'''上线三年就成功上市,拼多多上演了互联网企业的上市奇迹,却也放大平台上存在的诸多问题,拼多多在美国上市。'''# 词性标注+切分# 此处以代码的方式插入自定义词语,在实际项目中也可以用词典文件的方式CustomDictionary.insert("拼多多", "电商企业 1")analyzer = PerceptronLexicalAnalyzer()an原创 2021-03-30 00:10:49 · 1093 阅读 · 5 评论 -
中文自然语言处理--基于 LSTM+Seq2Seq 制作中文聊天机器人
Seq2Seq 属于 Encoder-Decoder 结构。基本思想就是利用两个 RNN,一个 RNN 作为 Encoder,另一个 RNN 作为 Decoder。Encoder 负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,这个过程称为编码。Decoder负责告诉模型对应的输出是什么。两个RNN通过语义向量连接,得以实现输入与输出长度不同。from keras.models import Modelfrom keras.layers import Input, LSTM,原创 2021-03-29 22:38:31 · 1618 阅读 · 2 评论 -
中文自然语言处理--Chatterbot中文聊天机器人基本用法
ChatterBot是使用Python构建的基于机器学习的对话对话框引擎,它使得可以基于已知对话的集合生成响应。ChatterBot的语言独立设计使其可以接受任何语言的培训。原理为通过搜索与输入匹配的最接近的已知语句来选择最接近的匹配响应,然后根据机器人与之通信的人发出每个响应的频率,将最有可能的响应返回给该语句。from chatterbot import ChatBotfrom chatterbot.trainers import ChatterBotCorpusTrainer# Chatter原创 2021-03-29 22:29:43 · 2703 阅读 · 0 评论 -
中文自然语言处理--基于玻森情感词典自定义计算中文文本情感值
使用玻森情感词典,来自定义计算一句话、或者一段文字的情感值。BosonNLP_sentiment_score.txt下载链接:import pandas as pdimport jieba# 使用一个行业标准的情感词典——玻森情感词典,来自定义计算一句话、或者一段文字的情感值。# 整个过程如下:# 加载玻森情感词典;# jieba 分词;# 获取句子得分。# 加载情感词典df = pd.read_table("./数据集/BosonNLP_sentiment_score.原创 2021-03-28 10:10:01 · 2174 阅读 · 1 评论 -
中文自然语言处理--基于textCNN的股吧数据情感分类
以中美贸易战背景下中兴通讯在股吧解禁前一段时间的评论数据,来进行情感数据人工打标签和CNN分类。其中,把消极 、中性 、积极分别用0、1、2来表示。import pandas as pdimport numpy as npimport jiebaimport randomimport kerasfrom keras.preprocessing import sequencefrom keras.models import Sequentialfrom keras.layers import原创 2021-03-28 00:29:38 · 1132 阅读 · 8 评论 -
中文自然语言处理--pytreebank绘制情感树
一句话用树状来表达,绘制情感树import pytreebankdataset = pytreebank.load_sst(".\\trainDevTestTrees_PTB\\trees")pytreebank.LabeledTree.inject_visualization_javascript()# select and example to visualizeexample = dataset["train"][0]# display it in the pageexample.d原创 2021-03-28 00:24:22 · 376 阅读 · 0 评论 -
中文自然语言处理--pytreebank 自定义绘制情感树
一句话用树状来表达,绘制情感树import pytreebank# 加载用来可视化的 JavaScript 和 CSS 脚本pytreebank.LabeledTree.inject_visualization_javascript()# 一句话用树状来表达,绘制情感树,把句子首先进行组合再绘制图形'''4代表总共有四个节点,(0 你)代表,‘你’这个字的情感点;编号的意义为:0–>”very negative”,1–> “negative”2–>, “neutr原创 2021-03-28 00:21:00 · 216 阅读 · 0 评论 -
中文自然语言处理--snownlp获取电商评论语料情感值
SnowNLP 主要可以进行中文分词、词性标注、情感分析、文本分类、转换拼音、繁体转简体、提取文本关键词、提取摘要、分割句子、文本相似等。需要注意的是,用 SnowNLP 进行情感分析,官网指出进行电商评论的准确率较高,因为它的语料库主要是电商评论数据。pip install snownlp进行安装from snownlp import SnowNLP# SnowNLP 对情感的测试值为0到1,值越大,说明情感倾向越积极。# 我们通过 SnowNLP 测试在京东上找的好评、中评、差评的结果。#原创 2021-03-28 00:08:04 · 1194 阅读 · 1 评论 -
中文自然语言处理--基于双向GRU 生成各种古诗
使用 LSTM 的变形 GRU 中文字符级建模,训练出一个能作诗的模型数据集集为4000+古诗,一行一首,标题、作者已去掉:https://download.csdn.net/download/fgg1234567890/16153813import osimport randomimport pandas as pdimport numpy as np# 引入需要的模块from keras.layers import Bidirectionalfrom keras.layers impo原创 2021-03-27 10:52:09 · 888 阅读 · 2 评论 -
中文自然语言处理--基于 textCNN 的电影推荐系统
github上一个开源的简单的推荐系统,使用TensorFlow2和Python 3开发。使用文本卷积神经网络,并利用MovieLens数据集完成电影推荐的任务。 实现的推荐功能如下:1、指定用户和电影进行评分2、推荐同类型的电影3、推荐您喜欢的电影4、看过这个电影的人还看了(喜欢)哪些电影将网络模型作为回归问题进行训练,得到训练好的用户特征矩阵和电影特征矩阵进行推荐,模型结构图:源代码:import tensorflow as tffrom sklearn.model_selectio原创 2021-03-24 22:57:34 · 1434 阅读 · 0 评论 -
中文自然语言处理--TextCNN文本分类(keras实现)
提到卷积神经网络(CNN),相信大部分人首先想到的是图像分类,比如 MNIST 手写体识别。CNN 已经在图像识别方面取得了较大的成果,随着近几年的不断发展,在文本处理领域,基于文本挖掘的文本卷积神经网络(textCNN)被证明是有效的。自然语言通常是一段文字,那么在特征矩阵中,矩阵的每一个行向量(比如 word2vec 或者 doc2vec)代表一个 Token,包括词或者字符。如果一段文字包含有 n 个词,每个词有 m 维的词向量,那么我们可以构造出一个 n*m 的词向量矩阵,在 NLP 处理过程中,让原创 2021-03-24 22:44:53 · 1203 阅读 · 2 评论 -
中文自然语言处理--基于 Keras 的GRU 中文文本分类
GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。相比LSTM,使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率,因此很多时候会更倾向于使用GRU,其中GRU输入输出的结构与普通的RNN相似,其中的内部思想与LSTM相似内部结构图:import randomimp原创 2021-03-17 23:35:33 · 1577 阅读 · 0 评论 -
中文自然语言处理--基于 Keras 的 LSTM中文文本分类
长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行。LSTM 通过三个“门”结构来控制不同时刻的状态和输出,分别为:遗忘门,输入门,输出门,结构图如下:遗忘门(forget gate):它决定了上一时刻的单元状态c_t-1有多少保留到当前时刻c_t输入门(input gate):它决定了当前时刻网络的输入x_t有多少保存到单元状态c_t输出门(output gate):控制单原创 2021-03-17 23:28:52 · 1784 阅读 · 1 评论 -
中文自然语言处理--人工实现基于 HMM (隐马尔可夫模型)训练自己的 Python 中文分词器
隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。是在被建模的系统被认为是一个马尔可夫过程与未观测到的(隐藏的)的状态的统计马尔可夫模型。具体原理可以参考“一文搞懂HMM(隐马尔可夫模型)“:https://www.cnblogs.com/skyme/p/4651331.html用python根据原理实现HMM,然后训练自己的 Pytho原创 2021-03-16 01:28:34 · 1414 阅读 · 1 评论 -
中文自然语言处理--基于KMeans++的中文短文本聚类
文本聚类是将一个个文档由原有的自然语言文字信息转化成数学信息,以高维空间点的形式展现出来,通过计算哪些点距离比较近,从而将那些点聚成一个簇,簇的中心叫做簇心。一个好的聚类要保证簇内点的距离尽量的近,但簇与簇之间的点要尽量的远。而KMeans++:KMeans++是KMeans的改进。K-means算法是很典型的基于距离的聚类算法,采用距离 作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。k-means算法特点在于原创 2021-03-16 01:18:28 · 2419 阅读 · 0 评论 -
中文自然语言处理--基于朴素贝叶斯的中文短文本分类
朴素贝叶斯分类大致介绍:它是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。具体步骤:这里用朴素贝叶原创 2021-03-16 01:05:48 · 640 阅读 · 2 评论 -
中文自然语言处理--文档向量Doc2Vec
Doc2Vec 是 Mikolov 在 Word2Vec 基础上提出的另一个用于计算长文本向量的工具,Doc2Vec 将文档语料通过一个固定长度的向量表达。from gensim.models.doc2vec import Doc2Vec, LabeledSentenceimport jiebafrom pprint import pprint# Doc2Vec 将文档语料通过一个固定长度的向量表达。# 在 Gensim 库中,Doc2Vec 与 Word2Vec 都极为相似。# 但两者在对输原创 2021-03-12 01:44:43 · 1593 阅读 · 0 评论 -
中文自然语言处理--词向量Word2Vec
词向量就是要用某个固定维度的向量去表示单词。也就是说要把单词变成固定维度的向量,作为机器学习(Machine Learning)或深度学习模型的特征向量输入。from gensim.models import Word2Vecimport jieba# 先导入 Gensim 中的 Word2Vec 和 jieba 分词器,再引入黄河和长江的语料# 定义停用词、标点符号punctuation = [",", "。", ":", ";", ".", "'", '"', "’", "?", "/",原创 2021-03-12 01:40:19 · 400 阅读 · 0 评论 -
中文自然语言处理--Gensim 构建词袋模型
import jiebafrom gensim import corporaimport gensim# 首先,引入 jieba 分词器、语料和停用词。# 定义停用词、标点符号punctuation = [",", "。", ":", ";", "?"]# 定义语料content = ["机器学习带动人工智能飞速的发展。", "深度学习带动人工智能飞速的发展。", "机器学习和深度学习带动人工智能飞速的发展。"]# 对语料进行分词操作,这里用到原创 2021-03-12 01:37:07 · 772 阅读 · 1 评论 -
中文自然语言处理--手动构建词袋模型
词袋模型把文本(段落或者文档)被看作是无序的词汇集合,忽略语法甚至是单词的顺序,把每一个单词都进行统计,同时计算每个单词出现的次数,常常被用在文本分类中,如贝叶斯算法、LDA 和 LSA 等。import jieba# 首先,引入 jieba 分词器、语料和停用词。# 定义停用词、标点符号punctuation = [",", "。", ":", ";", "?"]# 定义语料content = ["机器学习带动人工智能飞速的发展。", "深度学习带动人工智能飞速的发展。原创 2021-03-12 01:35:35 · 816 阅读 · 0 评论 -
中文自然语言处理--folium 绘制地理热力图
import foliumfrom folium.plugins import HeatMap# 数据:经纬度和权重data = [[40.04666663299843, 116.59569796477264, 0.9667425547098781], [39.86836537517533, 116.28201445195315, 0.8708549157348728], [40.08123232852134, 116.56884585184197, 0.910495原创 2021-03-12 01:32:26 · 1100 阅读 · 1 评论 -
中文自然语言处理--文本分析Python网络图(networkx)
import jieba, networkx as nx, matplotlib.pyplot as pltimport jieba.posseg as jp# 创建图# G = nx.Graph() # 无多重边无向图G = nx.DiGraph() # 无多重边有向图# G = nx.MultiGraph() # 有多重边无向图# G = nx.MultiDiGraph() # 有多重边有向图# 添加节点G.add_node('a')# 添加边G.add_edge('b',原创 2021-03-12 01:30:08 · 1170 阅读 · 0 评论 -
中文自然语言处理--基于文本关系的可视化-无多重边有向关系图
关系图法,是指用连线图来表示事物相互关系的一种方法。最常见的关系图是数据库里的 E-R 图,表示实体、关系、属性三者之间的关系。在文本可视化里面,关系图也经常被用来表示有相互关系、原因与结果和目的与手段等复杂关系,下面我们来看看如何用 Python 实现关系图制作。import pandas as pdimport matplotlib.pyplot as pltimport networkx as nx# NetworkX 绘制关系图的数据组织结构,节点和边都是 list 格式,边的 list原创 2021-03-12 01:25:49 · 582 阅读 · 0 评论 -
中文自然语言处理--基于文本内容的可视化-词云
Python + wordcloud + jieba生成中文中美贸易战相关语料词云# 引入所需要的包import jiebaimport pandas as pdimport numpy as npfrom imageio import imreadfrom wordcloud import WordCloud, ImageColorGeneratorimport matplotlib.pyplot as plt# 定义文件路径dir = "xxx\\wordcloud\\"# 定义语原创 2021-03-12 01:22:06 · 445 阅读 · 0 评论 -
中文自然语言处理--基于 pyhanlp 进行关键词提取
除了 jieba,也可以选择使用 HanLP 来完成关键字提取,内部采用 TextRankKeyword 实现:from pyhanlp import *# 采用的语料来自于百度百科对人工智能的定义,获取 Top5 关键字,用空格隔开打印sentence = "人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。" \ "人工智能是计算机科学的一个分支,它企图了解智原创 2021-03-10 21:34:17 · 366 阅读 · 0 评论 -
中文自然语言处理--基于 LDA 主题模型进行中文文本中的关键词提取
语料是一个关于汽车的短文本,下面通过 Gensim 库完成基于 LDA 的关键字提取。整个过程的步骤为:文件加载 -> jieba 分词 -> 去停用词 -> 构建词袋模型 -> LDA 模型训练 -> 结果可视化:# -*- coding:utf-8 -*-import jieba.analyseimport jieba.analyse as analyseimport jiebaimport pandas as pdfrom gensim import corp原创 2021-03-10 21:31:24 · 4238 阅读 · 1 评论 -
中文自然语言处理--jieba基于 TextRank 算法进行中文文本中的关键词提取
TextRank 是由 PageRank 改进而来,核心思想将文本中的词看作图中的节点,通过边相互连接,不同的节点会有不同的权重,权重高的节点可以作为关键词# -*- coding:utf-8 -*-import jieba.analyse# 采用的语料来自于百度百科对人工智能的定义,获取 Top5 关键字,用空格隔开打印sentence = "人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新原创 2021-03-10 21:28:38 · 776 阅读 · 2 评论 -
中文自然语言处理--jieba基于 TF-IDF 算法进行中文文本中的关键词提取
在信息检索理论中,TF-IDF 是 Term Frequency - Inverse Document Frequency 的简写。TF-IDF 是一种数值统计,用于反映一个词对于语料中某篇文档的重要性。在信息检索和文本挖掘领域,它经常用于因子加权。TF-IDF 的主要思想就是:如果某个词在一篇文档中出现的频率高,也即 TF 高;并且在语料库中其他文档中很少出现,即 DF 低,也即 IDF 高,则认为这个词具有很好的类别区分能力。# -*- coding:utf-8 -*-import jieba.an原创 2021-03-10 21:24:57 · 1530 阅读 · 0 评论 -
中文自然语言处理--HanLP 中文分词
HanLP 主项目采用 Java 开发from pyhanlp import HanLP, CustomDictionarycontent = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"# 分词print(HanLP.segment(content))# 自定义词典分词# 在没有使用自定义字典时的分词txt = "铁甲网是中国最大的工程机械交易平台。王者荣耀是一款游戏。"print(HanLP.segment(txt))# 添加自原创 2021-03-01 01:47:47 · 567 阅读 · 1 评论 -
中文自然语言处理--jieba 中文分词
jieba 的分词算法主要有以下三步:1.基于统计词典,构造前缀词典,基于前缀词典对句子进行切分,得到所有切分可能,根据切分位置,构造一个有向无环图(DAG);2.基于DAG图,采用动态规划计算最大概率路径(最有可能的分词结果),根据最大概率路径分词;3.对于新词(词库中没有的词),采用有汉字成词能力的 HMM 模型进行切分。import jiebaimport jieba.posseg as psgfrom collections import Counter# 并行分词原理为文本按行分原创 2021-03-01 01:43:43 · 532 阅读 · 0 评论