简单的中文分词和词向量化

**在做分词前需要做的准备:

**
(1):已经预处理过的需要分词的语料(需要分词的语料要符合结巴分词的要求,每句一行,并且以句号做结尾)
(2):需要一份相关方面的词典用于更加专业化的分词,单纯的使用结巴分词不能很好的分出你需要的词,会影响到你以后词向量化阶段。
(3):需要一份停用词表,因为结巴分词不能很好的把一些没有实际意义的词去掉,这样此会影响到后面词向量化阶段。停用词表的作用就是去掉一些没有意义的词语,单字,或者特殊符号。主要你需要去掉的东西,你把它写在停用词表中就可以。停用词表可以在网上下载,停用词表一般分为很多种,有专门的中文停用词表。在做分词的时候看需要下载,一般下载一个比较全的停用词表就行(停用词表一般包括特殊符号和中文一些无意义词)。此处需要注意,在保存停用词表的时候注意保存为编码格式utf-8的格式储存为txt格式.

开始分词:

代码如下
在这里插入图片描述

import codecs
import jieba
infile='date_open_yuliao.txt'##你需要分词的语料的文件名
outfile='data_open_yuliaochuli2.txt'##分词完成后保存的文件名
jieba.load_userdict("data_open_dict.txt")##用结巴加载你准备好的专用分词的词典
descsFile=codecs.open(infile,'r',encoding='utf-8')##utf-8的格式打开需要分词的语料
i=0
##进行分词处理
with open(outfile,'w',encoding='utf-8')as f:
    for line in descsFile:
        line=line.strip()
        words=jieba.cut(line)
        stopwords = [line.strip() for line in open('stopWord.txt',encoding='utf-8').readlines()]##加载停用词表
        for world in words:
            if world not in stopwords:
                f.write(world+' ')
        f.write('\n')

当执行完该程序后你就会得到一份分词好的语料(该语料文件名就是上方代码中你设定的文件名),分词成为如下:
在这里插入图片描述

开始词向量化:

代码如下在这里插入图片描述

import multiprocessing
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

inp='data_open_yuliaochuli2.txt'##你已经处理好的语料
outp1='data_model'##world2的模型
outp2='data_vector'##词向量话后的数据
model=Word2Vec(LineSentence(inp),iter=10,sg=0,size=50,window=3,min_count=1,workers=multiprocessing.cpu_count())
model.save(outp1)
model.wv.save_word2vec_format(outp2,binary=False)

在使用world2vec模型时,要注意里面的参数,根据你所需要的进行调整,也就是调参的过程:具体参考world2vec模型参数

模型的使用:

在这里插入图片描述``

from gensim.models import Word2Vec
model=Word2Vec.load('./data_model')##模型的读取
print(model.similarity("英国","贵州"))
print(model.most_similar('信息'))

这里最常用的两种方法,model.similarity,输入两个需要比较参数,会返回一个数值,该数值代表了两个参数的相关性大小。
在这里插入图片描述
model.most_similar函数,输入一个参数,默认会返回距离该参数最近的10个数据。
在这里插入图片描述
具体需要用模型进行其他常用相关操作的如下,如需了解自行查询熟悉各个方法的使用在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的处理和建立情绪分类模型的Python代码及注释: # 导入所需的库 import pandas as pd # 用于数据处理和存储 import jieba # 用于中文分词 import nltk # 用于英文分 from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer # 用于文本向量化 from sklearn.decomposition import LatentDirichletAllocation # 用于LDA主题建模 from sklearn.model_selection import train_test_split # 用于划分训练集和测试集 from sklearn.naive_bayes import MultinomialNB # 用于朴素贝叶斯分类 from sklearn.metrics import accuracy_score, confusion_matrix # 用于模型评估 # 读取数据 data = pd.read_excel('情绪分类数据.xlsx') # 数据预处理:去除无用列,重命名标签列,缺失值处理等 data = data.drop(columns=['微博ID', '用户昵称', '发布时间']) data = data.rename(columns={'情感倾向': 'label'}) data = data.dropna() # 分操作:中文使用jieba库,英文使用nltk库 def tokenizer(text): if isinstance(text, str): # 判断是否为字符串类型 words = jieba.cut(text) # 中文分词 return ' '.join(words) else: words = nltk.word_tokenize(text) # 英文分 return ' '.join(words) data['text'] = data['text'].apply(tokenizer) # 对文本列进行分操作 # 特征向量化:使用CountVectorizer、TfidfVectorizer等进行文本向量化 vectorizer = TfidfVectorizer(stop_words='english') # 初始化向量化器 X = vectorizer.fit_transform(data['text']) # 对文本进行向量化 y = data['label'] # 获取标签列 # LDA主题建模:使用LatentDirichletAllocation进行LDA主题建模,并提取主题特征 lda = LatentDirichletAllocation(n_components=5, random_state=42) # 初始化LDA模型 lda.fit(X) # 训练LDA模型 topic_feature = lda.transform(X) # 提取主题特征 # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(topic_feature, y, test_size=0.2, random_state=42) # 建立朴素贝叶斯分类模型 nb = MultinomialNB() # 初始化朴素贝叶斯分类器 nb.fit(X_train, y_train) # 训练朴素贝叶斯模型 y_pred = nb.predict(X_test) # 预测测试集标签 # 模型评估:使用accuracy_score、confusion_matrix等进行模型评估 accuracy = accuracy_score(y_test, y_pred) # 计算分类准确率 cm = confusion_matrix(y_test, y_pred) # 计算混淆矩阵 print('模型准确率:', accuracy) print('混淆矩阵:\n', cm)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值