fasttaxt 資料預處理和生成詞向量

2021-08-28 04:15:38 字數 2214 閱讀 9647

資料預處理:

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 損失函式 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 文件:

資料預處理

現實世界中資料大體上都是不完整,不一致的髒資料,無法直接進行資料探勘,或挖掘結果差強人意。為了提前資料探勘的質量產生了資料預處理技術。資料預處理有多種方法 資料清理,資料整合,資料變換,資料歸約等。這些資料處理技術在資料探勘之前使用,大大提高了資料探勘模式的質量,降低實際挖掘所需要的時間。一 資料清...

資料預處理

常見的資料預處理方法,以下通過sklearn的preprocessing模組來介紹 變換後各維特徵有0均值,單位方差。也叫z score規範化 零均值規範化 計算方式是將特徵值減去均值,除以標準差。sklearn.preprocessing scale x 一般會把train和test集放在一起做標...

資料預處理

用cut函式分箱 有時把數值聚集在一起更有意義。例如,如果我們要為交通狀況 路上的汽車數量 根據時間 分鐘資料 建模。具體的分鐘可能不重要,而時段如 上午 下午 傍晚 夜間 深夜 更有利於 如此建模更直觀,也能避免過度擬合。這裡我們定義乙個簡單的 可復用的函式,輕鬆為任意變數分箱。def binni...