初步认识1 .文本挖掘的基本内容1 .定义:从大量文本数据中提取隐含、未知、可能有用的信息。 别名:自然语言处理(NLP )简单易懂(考虑如何利用文本数据)2.获取基本过程数据)网络数据捕获; 文本文件读取; 图像OCR变换等(原始数据的数据化)分词; 信息清理和整合文档-词条矩阵; 相关词典的编写; 信息转换等)内在信息挖掘与展示)话语云; 关键词提取; 自动摘要; 文档聚类; 情感分析; 文章推荐等)3.分析任务常见分析任务:
亚洲语言分词; 自动摘要; 以消除为目标; 机器翻译; 词性标注; 主题识别; 文本分类; 语义理解等应用方向:
新一代搜索引擎(eg )热图); 网络内容安全(eg )民意调查); 企业知识管理; 包括要访问个人信息的客户的准确定位和推送4 .基本思想文本中包含的信息级别:
词条在文本中是否出现基于——种单词袋的模型
词条的各种内在关联——各种词典
语序信息——N-gram语言模型
语法信息——要搜索的区域
NLP的基本想法:
传统的——基于词典
基于现代——统计模型的特征提取:
对词汇进行各种可能的再编码和组合,尽可能地将数量信息化
使用模型对潜在信息提取进行模型化5 .原词汇数据化分词:将原文本分割成分析上有意义的最小信息单位去除禁止使用词:去除无意义单词的无效信息的削减(空白、标点符号等的去除)词根识别)这个问题几乎不存在的同义词/同义词识别)许多工具都缺乏这一功能术语识别)名称识别、专用名词识别等情感标记词性标注)用名词、动词、副词等标注) SAS/TM为汉语TM提供自动标记语法分析语义分析)语料库通用语料库(corpus基本特征)语言的真实
外部文件:直接通过网络采集加工; 保存文本文件并在外部重新装入程序
((list ) listoflist ) (结构灵活松散) )可以处理原始数据,并可以随时添加和删除成员
DataFrame )使用单词袋模型进行数据分析的常用格式。 行/列为index,对应的列/行为标题词,或需要记录的文档属性等。 如果作者、发表日期等词条/文档对应,则单元格中记录对应词条的出现频率,或对应的概率或分数。 生成矩阵格式(Doc2Term矩阵——文档词条矩阵、Term2Doc矩阵——词条文档矩阵)。 可以与原始数据的外部文件或list组合使用。 也可以对一个文档使用数据帧。 在这种情况下,用行/列表示一个句子/段落/章节。 三、基本步骤1.jieba分词常用分词包: IBA的三种分词模式:
精确模式:最精确地切分句子
全模式:扫描文中所有单词,速度快,但无法解决歧义
搜索引擎模式:基于精确模式重新划分长词,提高召回率应用搜索引擎分词繁体分词支持自定义词典importjieba # jiebaimportjieba.possegaspseg #词性标注import Jie bieba 的导入关键字提取全模式seg_list=jieba.cut (他来到上海交通大学(cut_all=True ) print ) [全模式]:’/’.join ) seg_list 用分隔符sep连接各要素生成的字符串精确模式seg_list=jieba.cut (他来到上海交通大学。
type(seg_list )的输出结果为generator,如果要返回列表,请使用以下代码。
seg_list=jieba.lcut (他来到上海交通大学(cut_all=True ) #利用全模式,但也可以改为精密模式。 也就是说,cut _ all=false print ((返回列表: (0) ).format (seg _ list ) ) )搜索引擎模式seg _ list=Jie ba.cut _ list
增词: add_word(word ) )。
删除字: Del_word(word )
使用自定义词典
词典的基本格式:
一词占一行
用词、词数(可选)、词性(可选)、空格分隔
词典文件必须用utf-8编码
词典未加载
sample_text==’周大福是创新事务主任,也是云计算专家’ #未加载词典print (‘【未加载词典】: ‘ ‘/’.join(Jieba.cut ) sammint
importjiebajieba.load _ user dict (d.txt ) (自定义路径jieba.load_userdict ) (如果未指定路径,则与该文件位于同一文件夹下) )。
“E:/jupyter/文本挖掘/d.txt”) # 顺序不可颠倒,若filename为路径或二进制方式打开,则需为UTF-8# 加载词典后print(“【加载词典后】:” + ‘/ ‘.join(jieba.cut(sample_text)))# 注意:# print(list(sample_text))输出列表形式# f = open(file_path, mode = “r”, enoding=”utf-8″)# r只读;r+可读可写;w只能写;w+可读可写;a只能写;a+可读可写#f = open(file_path, mode = “rb”)#因为rb读取出来之后的数据是bytes类型,即就是字节,所以我们在使用rb时可以不用指定encoding#rb的作⽤: 在读取非⽂本⽂件的时候,比如读取MP3、图像、 视频等信息的时候就需要⽤到rb。 搜狗细胞词库
搜索搜狗输入法——找自己要的词库——下载——下载格式为scel——利用深蓝词库转换/奥创词库转换为txt文件——在程序中导入相应词库 3.去除停用词 常见停用词种类
超高频常用词:基本不携带有效信息,eg:的、地、得等
虚词:介词、连词等,eg:只、条、当、从等
专业领域的高频词:基本不携带有效信息
视情况而定:eg:呵呵等
两种方法:分词后去除停用词;用extract_tags函数去除停用词
分词后去除停用词
步骤:读入停用词表文件——正常分词——分词结果中去除停用词
新列表=[ word for word in 源列表 if word not in 停用词列表 ] # 读取停用词文件import pandas as pdtmpdf = pd.read_csv(‘stopwords_sjz.txt’, names = [‘w’],sep = ‘aaa’,engine=’python’,encoding = ‘gbk’)tmpdf.head()# 先把停用词拆分出来newlist = [word for word in jieba.cut(s) if word not in list(tmpdf[‘w’])]print(newlist) 用extract_tags函数去除停用词
方法:根据TF-IDF算法将特征词提取出来,提取之前去掉停用词;可以人工指定停用词典
代码:jieba.analyse.set_stop_words()
先用该代码指定要去掉得停用词,再用extract_tags提取停用词 import jieba.analyse as anaana.set_stop_words(‘stopwords_sjz.txt’)ana.extract_tags(s)# 取前三个值 ana.extract_tags(s,topK=3) 4.词性标注
代码:jieba.posseg
posseg.cut(): 给出附加词性的分词结果
标记法:度娘中搜索“词性标注 ICTCLAS”
处理方法:
import jieba.posseg as psgtemper = psg.cut(s) # 附加词性的分词效果print(temper)for item in temper:print(item.word,item.flag) psg.lcut(s) # 直接输出为list,成员为pair 5.分词的NLTK实现 NLTK只能识别用空格作为词条分割方式,不能直接用于中文文本的分词。需要先用jieba分词,然后转换为空格分隔的连续文本,再转入NLTK框架使用。
参考视频:bilibili网站博主——“就是老衲啊”的“超实用Python文本挖掘视频教程”
参考链接
Radiance~