美文网首页
中文文本清洗、分词、训练词向量

中文文本清洗、分词、训练词向量

作者: 华小锐 | 来源:发表于2019-07-10 11:43 被阅读0次

中文文本在训练词向量的相关操作和使用的函数工具总结

只保留中文字符(数字、字母)

判断汉字、数字和字母的函数

#是否是汉语判读    
def is_chinese(uchar):
 """判断一个unicode是否是汉字"""
 if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
  return True
 else:
  return False
#是否是数字判断
def is_number(uchar):
 """判断一个unicode是否是数字"""
    if uchar >= u'\u0030' and uchar <= u'\u0039':
        return True
    else:
        return False
#是否是英文字符判断
def is_alphabet(uchar):
 """判断一个unicode是否是英文字母"""
    if (uchar >= u'\u0041' and uchar <= u'\u005a') or (uchar >= u'\u0061' and uchar <= u'\u007a'):
        return True
    else:
        return False

使用上述三种函数可以实现对字符串进行筛选的处理,该函数输入待处理的字符串,返回清洗后的字符串

def format_str(content):
    content_str = ''
    for i in content:
        if is_chinese(i):#or is_number(i) or is_alphabet(i):
            content_str = content_str+i
    return content_str

分词去停用词

cut_word传入一个文档,文档中每个句子占一行,输出是分词并且去除停用词之后的文档

def stopwordslist(filepath):
    stopwords = [line.strip() for line in open(filepath, 'rb').readlines()]
    return stopwords
 
def cut_word():

    stop_words = stopwordslist(stop_word_path)
    corpus = ''
    temp = 0
    with open("./word2vec_data.txt",'r',encoding='utf-8') as f:
        documents = f.readlines()
    for document in tqdm(documents):
        document = document.replace("\n","")
        document_cut = jieba.cut(document, cut_all=False)
        # print('/'.join(document_cut))\
        result = ""
        for item in tqdm(document_cut):
            if(item not in stop_words):
                result += item;
        corpus += result+"\n"
          #  print(result)
    #分好词之后的数据
    with open('./corpus.txt', 'w+', encoding='utf-8') as f:
        f.write(corpus)  # 读取的方式和写入的方式要一致

gensim中word2vec进行词向量训练

# -*- coding: utf-8 -*-
from gensim.models import word2vec
import logging
 
##训练word2vec模型
 
# 获取日志信息
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', level=logging.INFO)
 
# 加载分词后的文本,使用的是Text8Corpus类
 
sentences = word2vec.Text8Corpus(r'./corpus.txt')
 
# 训练模型,部分参数如下
model = word2vec.Word2Vec(sentences, size=100, hs=1, min_count=1, window=3)
 
# 模型的预测
print('-----------------分割线----------------------------')
 
# 计算两个词向量的相似度
try:
    sim1 = model.similarity(u'中央企业', u'事业单位')
    sim2 = model.similarity(u'教育网', u'新闻网')
except KeyError:
    sim1 = 0
    sim2 = 0
print(u'中央企业 和 事业单位 的相似度为 ', sim1)
print(u'人民教育网 和 新闻网 的相似度为 ', sim2)
 
print('-----------------分割线---------------------------')
# 与某个词(李达康)最相近的3个字的词
print(u'与国资委最相近的3个字的词')
req_count = 5
for key in model.similar_by_word(u'国资委', topn=100):
    if len(key[0]) == 3:
        req_count -= 1
        print(key[0], key[1])
        if req_count == 0:
            break
 
print('-----------------分割线---------------------------')
# 计算某个词(侯亮平)的相关列表
try:
    sim3 = model.most_similar(u'新华社', topn=20)
    print(u'和 新华社 与相关的词有:\n')
    for key in sim3:
        print(key[0], key[1])
except:
    print(' error')
 
print('-----------------分割线---------------------------')
# 找出不同类的词
sim4 = model.doesnt_match(u'新华社 人民教育出版社 人民邮电出版社 国务院'.split())
print(u'新华社 人民教育出版社 人民邮电出版社 国务院')
print(u'上述中不同类的名词', sim4)
 
print('-----------------分割线---------------------------')
# 保留模型,方便重用
model.save(u'word2vec.model')

相关文章

  • 中文文本清洗、分词、训练词向量

    中文文本在训练词向量的相关操作和使用的函数工具总结 只保留中文字符(数字、字母) 判断汉字、数字和字母的函数 使用...

  • 词向量

    词向量大法 从文本语料得到词向量的话,大概来讲有如下几个步骤:分词,统计词频,构建huffman树,输入文本训练词...

  • 智能问答初识

    1. 智能问答的一般实现步骤包括:1)文本库分词,训练模型,由模型将文本库转换为词向量;2)将词向量与索引进行存储...

  • python文本相似度计算

    步骤 分词、去停用词 词袋模型向量化文本 TF-IDF模型向量化文本 LSI模型向量化文本 计算相似度 理论知识 ...

  • gensim训练词向量

    import使用到的库 分词类 训练词向量 主函数 测试

  • NLP学习------HanLP使用实验

    在之前的实验中得到了不在词向量里的词与分词结果,结果有500多个词不在词向量里,解决方案就是重新分词,或再追加训练...

  • 豆瓣评分预测

    中文分词 中文分词包jieba,用jieba对原始文本做分词。 文本预处理 1. 去掉无用的字符 2. 去掉停用词...

  • 分词工具使用解析

    1.现有的分词工具包 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及切词,因此我上...

  • 利用gensim使用腾讯开源的预训练好的词向量

    腾讯开源词向量下载地址 导入词向量 未知词短语向量补齐: 样例: 输出为: 分词,词向量编码,去除标点符号(中英文...

  • word2vector

    word2vec词向量训练及中文文本相似度计算 深度学习必须熟悉的算法之word2vector(一) 理解Word...

网友评论

      本文标题:中文文本清洗、分词、训练词向量

      本文链接:https://www.haomeiwen.com/subject/ciickctx.html