分词、词频统计与文本特征提取 您所在的位置:网站首页 list查找函数 分词、词频统计与文本特征提取

分词、词频统计与文本特征提取

2023-03-27 08:15| 来源: 网络整理| 查看: 265

分词

使用jieba中的cut函数分词长文本

words=list(jieba.cut(text,cut_all=False))

jieba.cut返回的是可迭代对象,使用list转为列表cut_all:false普通分词,false全分词。全分词:美国国会参议院这种较长的词除了切分外,也会被当成一个词。词频统计

使用collections中的Counter函数

dic=Counter(words)

dic的父类为字典dic.most_common(n) 查看词频数最大的前n个词和频数。返回的是一个列表。如果忽略n或者为None,返回counter中的所有元素。取词频最大的前n个词作为文本特征

dic.most_common(5)会得到在文本中词频靠前的5个词和频数,假设用这前5个词作为文本的特征。

文本特征提取

分别统计文章中每一段出现这些特征的频数。这里通过下面的代码手动实现。

例子# -*- coding:utf-8 -*- import re,jieba from collections import Counter import numpy p1='ChatGPT是人工智能研究公司OpenAI研发的最新聊天机器人模型。' p2='ChatGPT是人工智能的代表作,在和全球网友互动中,有着各种令人吃惊的成绩。' p3='在某种意义上,ChatGPT越来越像一个“真实的人”。理论上,只要算力足够强大,ChatGPT与人类的互动越多。' p4='巴黎政治大学已宣布,禁止使用ChatGPT等一切基于AI的人工智能工具,' p5='让人工智能不断进化演变,最终能够像人类一样思考,本是这一研究领域的终极目标。' p6='故而,虽然ChatGPT的出现并不令人意外,其互动效果但还是让人类社会有点措手不及。' paragraphs=[p1, p2, p3, p4, p5,p6] WordsInParagraph=[] words=[] pattern="[。,的“”在了;中基于等各种里进行越来越上像让是]" for paragraph in paragraphs: text=re.sub(pattern,"", paragraph) word_text=list(jieba.cut(text,cut_all=False)) WordsInParagraph.append(word_text) for item2 in word_text: words.append(item2) dic=Counter(words) dic_most=dic.most_common(5) word_features, value_ten=zip(*dic_most) fre_mat=[] for i,paragraph in enumerate(paragraphs): dic_fre=dict(zip(word_features,[0]*len(word_features))) for word in WordsInParagraph[i]: if word in word_features: dic_fre[word]+=1 fre_mat.append(list(dic_fre.values())) print("原段落文本:\n",numpy.array(paragraphs)) print("段落分词文本:\n", numpy.array(WordsInParagraph)) print("特征词频:",dic_most) print("词特征:",word_features) print("文本特征向量:\n",numpy.array(fre_mat))结果原段落文本: ['ChatGPT是人工智能研究公司OpenAI研发的最新聊天机器人模型。' 'ChatGPT是人工智能的代表作,在和全球网友互动中,有着各种令人吃惊的成绩。' '在某种意义上,ChatGPT越来越像一个“真实的人”。理论上,只要算力足够强大,ChatGPT与人类的互动越多。' '巴黎政治大学已宣布,禁止使用ChatGPT等一切基于AI的人工智能工具,' '让人工智能不断进化演变,最终能够像人类一样思考,本是这一研究领域的终极目标。' '故而,虽然ChatGPT的出现并不令人意外,其互动效果但还是让人类社会有点措手不及。'] 段落分词文本: [list(['ChatGPT', '人工智能', '研究', '公司', 'OpenAI', '研发', '最新', '聊天', '机器人', '模型']) list(['ChatGPT', '人工智能', '代表作', '和', '全球', '网友', '互动', '有着', '令人吃惊', '成绩']) list(['某', '意义', 'ChatGPT', '一个', '真实', '人', '理论', '只要', '算力', '足够', '强大', 'ChatGPT', '与', '人类', '互动', '多']) list(['巴黎', '政治', '大学', '已', '宣布', '禁止', '使用', 'ChatGPT', '一切', 'AI', '人工智能', '工具']) list(['人工智能', '不断', '化', '演变', '最终', '能够', '人类', '一样', '思考', '本', '这', '一', '研究', '领域', '终极目标']) list(['故而', '虽然', 'ChatGPT', '出现', '并', '不', '令人', '意外', '其', '互动', '效果', '但', '还', '人类', '社会', '有点', '措手不及'])] 特征词频: [('ChatGPT', 6), ('人工智能', 4), ('互动', 3), ('人类', 3), ('研究', 2)] 词特征: ('ChatGPT', '人工智能', '互动', '人类', '研究') 文本特征向量: [[1 1 0 0 1] [1 1 1 0 0] [2 0 1 1 0] [1 1 0 0 0] [0 1 0 1 1] [1 0 1 1 0]] 进程已结束,退出代码0文本数据分类预测

假设用上例中的文本特征向量当作特征数据xtrain,该数据集包括6个样本。我们人为的为这6个样本打一些标签,假设同时包括ChatGPT,和人工智能的标记为科技文章,反之则不是。然后训练模型。

当输入一段新段落后,提取新文本特征向量,就可以通过模型来预测新段落的标签。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有