日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

中文文本预处理流程(带你分析每一步)

發(fā)布時間:2023/12/15 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 中文文本预处理流程(带你分析每一步) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

標簽:中文文本預處理
作者:煉己者

歡迎大家訪問我的簡書以及我的博客,大家如果感覺格式看著不舒服,也可以去看我的簡書,里面也會有發(fā)布
本博客所有內(nèi)容以學習、研究和分享為主,如需轉(zhuǎn)載,請聯(lián)系本人,標明作者和出處,并且是非商業(yè)用途,謝謝!


摘要

機器學習我的理解就是把各種原始的東西變成機器可以理解的東西,然后再用各種機器學習算法來做操作。機器可以理解的東西是什么呢?——向量 。所以不管是圖片還是文字,要用機器學習算法對它們進行處理,就要把它們轉(zhuǎn)為向量。
網(wǎng)上大部分都是處理英文文本的資料,本文就以中文文本為例,將原始的文本經(jīng)過預處理得到文本向量

目錄

去除指定無用的符號
讓文本只保留漢字
對文本進行jieba分詞
去除停用詞
將文本轉(zhuǎn)為tfidf向量并輸入到算法中

操作流程

1.去除指定無用的符號

我們拿到的文本有時候很有很多空格,或者你不想要的符號,那么你就可以用這個方法去掉所有你不想要的符號。在這里我以空格為例

content = ['  歡迎來到  煉己者的博客','煉己者     帶你入門NLP  ']
# 去掉文本中的空格
def process(our_data):
    m1 = map(lambda s: s.replace(' ', ''), our_data)
    return list(m1)
print(process(content))

傳入的參數(shù)our_data是個列表,此函數(shù)可以把文本中的所有空格全部去掉。看一下輸出的結(jié)果。可以發(fā)現(xiàn),所有的空格都被刪掉了

['歡迎來到煉己者的博客', '煉己者帶你入門NLP']

2.讓文本只保留漢字

這個操作我最喜歡,他可以去掉所有的符號,包括數(shù)字、標點、字母等等

content = ['如果這篇文章對你有所幫助,那就點個贊唄!!!','如果想聯(lián)系煉己者的話,那就打電話:110!!!','想學習NLP,那就來關注呀!^-^']
# 讓文本只保留漢字
def is_chinese(uchar):
    if uchar >= u'u4e00' and uchar <= u'u9fa5':
        return True
    else:
        return False

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

# 參函數(shù)傳入的是每一句話
chinese_list = []
for line in content:
    chinese_list.append(format_str(line))
print(chinese_list)

然后我們來看一下輸出的內(nèi)容,你會發(fā)現(xiàn)只剩下中文了。這個操作實在太騷了

['如果這篇文章對你有所幫助那就點個贊唄', '如果想聯(lián)系煉己者的話那就打電話', '想學習那就來關注呀']

3. 對文本進行jieba分詞

首先你得下載jieba這個庫,直接pip install jieba即可。
我們就以上面處理好的那句話作為例子來操作

chinese_list = ['如果這篇文章對你有所幫助那就點個贊唄', '如果想聯(lián)系煉己者的話那就打電話', '想學習那就來關注呀']

# 對文本進行jieba分詞
import jieba
def fenci(datas):
    cut_words = map(lambda s: list(jieba.cut(s)), datas)
    return list(cut_words)

print(fenci(chinese_list))

然后你就可以得到分詞的結(jié)果了

[['如果', '這', '篇文章', '對', '你', '有所', '幫助', '那', '就', '點個', '贊', '唄'],
 ['如果', '想', '聯(lián)系', '煉己', '者', '的話', '那', '就', '打電話'],
 ['想', '學習', '那', '就', '來', '關注', '呀']]

4.去除停用詞

首先你得上網(wǎng)下載一個停用詞表,也可以關注我的微信公眾號
ZhangyhPico,回復停用詞表,就可以拿到了。然后把這份停用詞轉(zhuǎn)換為列表
為了方便大家理解,在這里我就假設一個停用詞表了,我們以上面分好詞的數(shù)據(jù)為例

# 分好詞的數(shù)據(jù)
fenci_list = [['如果', '這', '篇文章', '對', '你', '有所', '幫助', '那', '就', '點個', '贊', '唄'],
 ['如果', '想', '聯(lián)系', '煉己', '者', '的話', '那', '就', '打電話'],
 ['想', '學習', '那', '就', '來', '關注', '呀']]

# 停用詞表
stopwords = ['的','呀','這','那','就','的話','如果']

# 去掉文本中的停用詞
def drop_stopwords(contents, stopwords):
    contents_clean = []
    for line in contents:
        line_clean = []
        for word in line:
            if word in stopwords:
                continue
            line_clean.append(word)
        contents_clean.append(line_clean)
    return contents_clean

print(drop_stopwords(fenci_list,stopwords))

我們來一下結(jié)果,對比發(fā)現(xiàn)少了一些停用詞

[['篇文章', '對', '你', '有所', '幫助', '點個', '贊', '唄'],
 ['想', '聯(lián)系', '煉己', '者', '打電話'],
 ['想', '學習', '來', '關注']]

我覺得上面的操作也可應用在去除一些你不想要的符號上面,你可以把沒有用的符號添加到停用詞表里,那么它也會被去掉

5.將文本轉(zhuǎn)為tfidf向量并輸入到算法中

最后這一步你可以參照這篇文章操作,使用不同的方法計算TF-IDF值

不過為了完整起見,我在這里給大家再演示一遍操作流程。咱們就以上面去掉停用詞的數(shù)據(jù)為例

word_list = [['篇文章', '對', '你', '有所', '幫助', '點個', '贊', '唄'],
 ['想', '聯(lián)系', '煉己', '者', '打電話'],
 ['想', '學習', '來', '關注']]

from gensim import corpora,models
dictionary = corpora.Dictionary(word_list)
new_corpus = [dictionary.doc2bow(text) for text in word_list]
tfidf = models.TfidfModel(new_corpus)

tfidf_vec = []
for i in range(len(words)):
    string = words[i]
    string_bow = dictionary.doc2bow(string.split())
    string_tfidf = tfidf[string_bow]
    tfidf_vec.append(string_tfidf)
print(tfidf_vec)

在這里我們就可以得到tfidf向量,這里調(diào)用的是gensim庫計算的tfidf向量,你也可以直接調(diào)用sklearn庫來計算tfidf向量,怎么操作看上面的那篇文章,里面都有介紹。我們來看一下得到的tfidf向量長什么樣子

[[(0, 0.35355339059327373),
  (1, 0.35355339059327373),
  (2, 0.35355339059327373),
  (3, 0.35355339059327373),
  (4, 0.35355339059327373),
  (5, 0.35355339059327373),
  (6, 0.35355339059327373),
  (7, 0.35355339059327373)],
 [(8, 0.18147115159841573),
  (9, 0.49169813431045906),
  (10, 0.49169813431045906),
  (11, 0.49169813431045906),
  (12, 0.49169813431045906)],
 [(8, 0.2084041054460164),
  (13, 0.5646732768699807),
  (14, 0.5646732768699807),
  (15, 0.5646732768699807)]]

很明顯,句子的長度不一樣,所以得到的tfidf向量的維度也不一樣。那么我們該怎么操作呢?——可以用lsi向量來保證向量的維度一致

# num_topics參數(shù)可以用來指定維度
lsi_model = models.LsiModel(corpus = tfidf_vec,id2word = dictionary,num_topics=2)

lsi_vec = []
for i in range(len(words)):
    string = words[i]
    string_bow = dictionary.doc2bow(string.split())
    string_lsi = lsi_model[string_bow]
    lsi_vec.append(string_lsi)
print(lsi_vec)

看一下結(jié)果

[[(1, 2.8284271247461907)],
 [(0, 1.6357709481422218)],
 [(0, 1.4464385059387106)]]

sklearn庫的機器學習算法很齊全,你可以調(diào)用這些算法包來進行操作。但是sklearn里的算法要求數(shù)據(jù)的格式必須是array格式,所以我們得想辦法把gensim計算的tfidf向量格式轉(zhuǎn)化為array格式。按照下面操作即可

from scipy.sparse import csr_matrix
data = []
rows = []
cols = []
line_count = 0
for line in lsi_vec:
    for elem in line:
        rows.append(line_count)
        cols.append(elem[0])
        data.append(elem[1])
    line_count += 1
lsi_sparse_matrix = csr_matrix((data,(rows,cols))) # 稀疏向量
lsi_matrix = lsi_sparse_matrix.toarray() # 密集向量
print(lsi_matrix)

結(jié)果長這樣

array([[0.        , 2.82842712],
       [1.63577095, 0.        ],
       [1.44643851, 0.        ]])

我們的目的已經(jīng)達到。肯定有人會問,你為啥不直接調(diào)用sklearn里計算tfidf向量的方法,那多方便,多直接。何必這樣轉(zhuǎn)換來轉(zhuǎn)換去的。

這是有原因的,假設你的數(shù)據(jù)量很大,幾百萬條,那么用sklearn計算的tfidf向量維度會非常大,最后調(diào)用機器學習算法包的時候就會報錯。如果你調(diào)用gensim來計算tfidf向量,然后再采用上述的方法,就可以對向量進行降維了,而且你還可以指定維度。在lsi向量那一步進行操作,num_topics參數(shù)可以用來指定維度

總結(jié)

以上便是整個中文文本的預處理了,這個流程可以應付大多數(shù)的文本處理任務。你把文本轉(zhuǎn)換為向量之后,后面的操作就很容易了,調(diào)用sklearn算法包,或者自己寫一個機器學習的算法,這些都是有章法可循的。

希望可以幫助到大家,如果你覺得這篇文章對你有一定的幫助,那就點個贊支持一下吧!如果有什么問題的話也可以在文章下面評論,我們一起交流解決問題!

歡迎掃碼關注

總結(jié)

以上是生活随笔為你收集整理的中文文本预处理流程(带你分析每一步)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人无码一区二区在线播放 | 啦啦啦免费高清视频在线观看 | 日韩五码电影 | 色久综合网 | 亚洲精品国产精华液 | 17c在线观看视频 | www.男人天堂.com | 亚洲一级二级 | 一级特黄肉体裸片 | 狠狠躁夜夜躁人 | 国产一级特黄aaa大片 | 性感美女被爆操 | 久久99久久久久久 | 日本高清无吗 | 亚洲国产一二三 | a级在线视频| 老熟妇一区二区三区啪啪 | 黄视频免费在线看 | 国产精品无码一区二区三 | 99综合色 | 成人第一页| 亚洲福利在线观看 | 日韩成人av在线播放 | 久久97人妻无码一区二区三区 | 色视频综合 | 欧美在线看 | 国产伦精品一区二区三区视频网站 | 成人在线免费观看网站 | 久久永久视频 | 午夜你懂的 | 日韩的一区二区 | 看免费黄色片 | 丰满人妻一区二区三区四区 | 91在线免费看 | 一级片观看 | 永久精品网站 | 日本黄色高清 | 亚洲精品国产美女 | 欧洲成人综合网 | 国产不卡av在线播放 | 意大利性荡欲xxxxxx | 国产一区二区三区久久久 | 国产欧美日韩在线视频 | 天天干天天舔天天射 | 涩涩屋视频 | 人人爽人人射 | 欧美草逼视频 | 妖精视频一区二区 | 欧美成人91 | 欧洲视频在线观看 | 欧美区一区二 | 美女让男生桶 | 国产精品免费av一区二区 | 国产91看片 | 外国电影免费观看高清完整版 | 老汉av| 天天干b | 色婷婷欧美 | 美女又爽又黄视频 | 操操日| 一区二区三区不卡在线观看 | 91黄版| 国产免费av一区二区三区 | 香蕉视频免费在线 | 黄色成年人视频 | 91九色porny视频 | 欧美 亚洲 另类 激情 另类 | 狠狠躁18三区二区一区传媒剧情 | 一二三区不卡 | 国模无码大尺度一区二区三区 | 久久调教视频 | 一区二区三区四区高清视频 | 人人射人人爱 | 国产一区二区自拍 | 尤物网址在线观看 | 草莓巧克力香氛动漫的观看方法 | 97免费人妻无码视频 | 一区二区三区 日韩 | 在线亚洲精品 | 国产免费一区二区三区三州老师 | 成年在线观看 | 自拍偷拍亚洲天堂 | 91人人爱| 啪啪网视频 | 日韩精品一区二区三区色欲av | 青青青草视频在线观看 | 国产精品aaaa | av第一页 | 香蕉av一区二区三区 | 日韩av色图| 国产性色视频 | av成人 | 亚洲欧美自拍视频 | 国产免费高清 | 香蕉视频在线网站 | 丰满人妻一区二区三区免费 | 国精产品一区 | 91综合色 | 高h文在线 |