使用了pandas,matplotlib,nltk,gensim,spacy库等进行了相关维度的分析
先附上项目地址https://aistudio.baidu.com/aistudio/projectdetail/306102
首先简单介绍一下数据源情况,本数据是民主党2020年2月26日辩论笔录,包含了辩论名称,辩论环节,辩论人,辩论内容及对应时间
探索一下数据集,里面是有12场辩论,最多的辩论环节是有20轮,总共有106个民主党议员就议题进行了辩论,平均时长是16.49秒
接着对数据进行了可视化,12场辩论的议题作为横坐标,rotation = 90就是将辩论的议题文字垂直放置,纵坐标是对应的就此内容进行辩论讲演的次数
接着对各个议员的辩论次数数据进行了可视化,横坐标是议员名字,纵坐标是对应的议员进行辩论讲演的次数
厉害了,没想到还有这类数据。
其实我还准备了美国历史上的著名小说数据集
接着介绍一下spacy库和en_core_web_sm模型,spacy和nltk,gensim一样,也是自然语言处理常用的一个库,spaCy带有预先训练的统计模型和单词向量,目前支持20多种语言的标记。它具有世界上速度最快的句法分析器,用于标签的卷积神经网络模型,解析和命名实体识别以及与深度学习整合。SpaCy的作者Matthew Honnibal也是nlp界的一个大牛。项目地址在github上的explosion/spaCy#spacy-industrial-strength-nlp,从v1.7.0开始,spaCy的模型可以作为Python包安装
为了比较容易的定位出话题的主题词,我们只取出词性为名词的这些,把他们合并到一个列表中,接着取出10个高频话题
token.lemma_ for token in doc if token.pos_ == "NOUN"
接着我们使用NMF,先说说NMF,NMF作为一个漂亮的矩阵分解方法,它可以很好的用于主题模型,并且使主题的结果有基于概率分布的解释性。我们在接触自然语言领域都会涉及到基于监督学习与非监督学习的文本分类,在非监督学习领域会提到lsa、lda主题模型的实现。但之前的讨论都是基于工具层面的。其实这些模型的基础算法都是NMF模型分解。可以我们不会对文本从底层去实现这样的算法。但了解其实现的机制还是非常有帮助的。NMF的思想:V=WH(W权重矩阵、H特征矩阵、V原矩阵),通过计算从原矩阵提取权重和特征两个不同的矩阵出来。属于一个无监督学习的算法。
这部分代码的给你就是取出10个高频话题,使用的就是非负矩阵分解
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer vec = TfidfVectorizer(max_features=5000, stop_words="english", max_df=0.95, min_df=2) features = vec.fit_transform(democrat_data.speech_nouns) from sklearn.decomposition import NMF cls = NMF(n_components=n_topics, random_state=random_state)
接下来我们使用nltk和gensim,做出各辩论话题的相似度计算,比如有关税收的话题最接近的10个词
print("Talked issue #1: Tax") model.wv.most_similar("tax") Talked issue #1: Tax [('wealthy', 0.9996469616889954), ('away', 0.9996297955513), ('prescription', 0.9995530843734741), ('works', 0.999527096748352), ('everyone', 0.9995244741439819), ('afford', 0.9995224475860596), ('create', 0.9995041489601135), ('trillion', 0.9994869828224182), ('violence', 0.9994843006134033), ('big', 0.999479353427887)]
与Healthcare最接近的5个词分别是 people,health,insurance,million,companies
可以看到效果还是不错的
厉害了,可以针对各类语言分析这类型文档。
有没有提取句子主干(缩句)或者拆分简单句的模型?
我前一阵子还见到一个
对 可以分析国内的一些会议记录
其实用word2vec tf-idf这种就可以
文本摘要算法也可以试试
而且也不太明白你具体要做什么 可以举个例子不?
如果是有数据的情况下,可以用unilm这个比较重的模型,参数用bert的预训练参数,,是我目前见过效果做好的(最新的论文有更好的,我没有实现过)
首先简单介绍一下数据源情况,本数据是民主党2020年2月26日辩论笔录,包含了辩论名称,辩论环节,辩论人,辩论内容及对应时间
探索一下数据集,里面是有12场辩论,最多的辩论环节是有20轮,总共有106个民主党议员就议题进行了辩论,平均时长是16.49秒
接着对数据进行了可视化,12场辩论的议题作为横坐标,rotation = 90就是将辩论的议题文字垂直放置,纵坐标是对应的就此内容进行辩论讲演的次数
接着对各个议员的辩论次数数据进行了可视化,横坐标是议员名字,纵坐标是对应的议员进行辩论讲演的次数
厉害了,没想到还有这类数据。
其实我还准备了美国历史上的著名小说数据集
接着介绍一下spacy库和en_core_web_sm模型,spacy和nltk,gensim一样,也是自然语言处理常用的一个库,spaCy带有预先训练的统计模型和单词向量,目前支持20多种语言的标记。它具有世界上速度最快的句法分析器,用于标签的卷积神经网络模型,解析和命名实体识别以及与深度学习整合。SpaCy的作者Matthew Honnibal也是nlp界的一个大牛。项目地址在github上的explosion/spaCy#spacy-industrial-strength-nlp,从v1.7.0开始,spaCy的模型可以作为Python包安装
为了比较容易的定位出话题的主题词,我们只取出词性为名词的这些,把他们合并到一个列表中,接着取出10个高频话题
接着我们使用NMF,先说说NMF,NMF作为一个漂亮的矩阵分解方法,它可以很好的用于主题模型,并且使主题的结果有基于概率分布的解释性。我们在接触自然语言领域都会涉及到基于监督学习与非监督学习的文本分类,在非监督学习领域会提到lsa、lda主题模型的实现。但之前的讨论都是基于工具层面的。其实这些模型的基础算法都是NMF模型分解。可以我们不会对文本从底层去实现这样的算法。但了解其实现的机制还是非常有帮助的。NMF的思想:V=WH(W权重矩阵、H特征矩阵、V原矩阵),通过计算从原矩阵提取权重和特征两个不同的矩阵出来。属于一个无监督学习的算法。
这部分代码的给你就是取出10个高频话题,使用的就是非负矩阵分解
接下来我们使用nltk和gensim,做出各辩论话题的相似度计算,比如有关税收的话题最接近的10个词
与Healthcare最接近的5个词分别是 people,health,insurance,million,companies
可以看到效果还是不错的
厉害了,可以针对各类语言分析这类型文档。
有没有提取句子主干(缩句)或者拆分简单句的模型?
我前一阵子还见到一个
对 可以分析国内的一些会议记录
其实用word2vec tf-idf这种就可以
文本摘要算法也可以试试
而且也不太明白你具体要做什么 可以举个例子不?
如果是有数据的情况下,可以用unilm这个比较重的模型,参数用bert的预训练参数,,是我目前见过效果做好的(最新的论文有更好的,我没有实现过)