fasttaxt:数据预处理和生成词向量

数据预处理:

1,符号处理:

def go_split(s,min_len):
    # 拼接正则表达式
    symbol = ',;。!、?!'
    symbol = "[" + symbol + "]+"
    # 一次性分割字符串
    result = re.split(symbol, s)
return [x for x in result if len(x)>min_len]

def is_dup(s,min_len):
    result = go_split(s,min_len)
return len(result) !=len(set(result))

def is_neg_symbol(uchar):
    neg_symbol=['!', '0', ';', '?', '、', '。', ',']
return uchar in neg_symbol

2,分词

#encoding=utf-8
#author linxinzhu
import jieba
import sys
reload(sys)
sys.setdefaultencoding('utf8')
f = open('3.txt','r')
outf = open('4.txt','w')
for line in f:


    line = line.decode("utf-8").encode("utf-8")
    seg_text = jieba.cut(line.replace("\t"," ").replace("\n"," ")) # 去掉\t \n然后用jieba分词切分
    outline = " ".join(seg_text) # combined into a outline
   # outline = outline.encode("utf-8") + "\t__label__" + e + "\n" # add label
    outf.write(outline)

3,使用fasttaxt生成向量

import fasttext

# Skipgram model
model = fasttext.skipgram('data.txt', 'model')
print model.words # list of words in dictionary

# CBOW model
model = fasttext.cbow('data.txt', 'model')
print model.words # list of words in dictionary

参数

input_file              训练文件路径(必须)
output                  输出文件路径(必须)
lr                      学习率 default 0.05
lr_update_rate          学习率更新速率 default 100
dim                     训练的词向量维度 default 100
ws                      上下文窗口大小 default 5
epoch                   epochs 数量 default 5
min_count               最低出现的词频 default 5
word_ngrams             n-grams 设置
loss                    损失函数 {ns,hs,softmax} default ns
minn                    最小字符长度 default 3
maxn                    最大字符长度 default 6
thread                  线程数量 default 12
t                       采样阈值 default 0.0001
silent                  禁用 c++ 扩展日志输出 default 1
encoding                指定 input_file 的编码 default utf-8

fasttext 文档:https://fasttext.cc/docs/en/unsupervised-tutorial.html

展开阅读全文

没有更多推荐了,返回首页