国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 自然語言處理 文本分類 地鐵方面留言文本

這篇具有很好參考價值的文章主要介紹了Python 自然語言處理 文本分類 地鐵方面留言文本。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

將關(guān)于地鐵的留言文本進(jìn)行自動分類。

不要著急,一步步來。

導(dǎo)入需要的庫。

import numpy as np
import pandas as pd
import jieba # 分詞
import re # 正則
from fnmatch import fnmatch # 通配符
from sklearn.preprocessing import LabelEncoder
from sklearn.feature_extraction.text import CountVectorizer # 文本向量化
from sklearn.feature_extraction.text import TfidfTransformer # 文本向量化
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
from sklearn import svm # 支持向量機模型

定義函數(shù),加載用來分詞的自定義詞典。

# 可根據(jù)實際需要,手動調(diào)整自定義詞典路徑和自定義詞匯
def jieba_fenci():
    # 在jieba中加載自定義的地鐵線路名、地鐵站點名詞典
    jieba.load_userdict("mydict_line.csv")
    jieba.load_userdict("mydict_station.csv")
    # 一些在市民留言中常見的高頻的詞,發(fā)現(xiàn)了就手動添加進(jìn)去
    myaddword_ls = ["公共自行車", "金溪園"]
    for w in myaddword_ls:
        jieba.add_word(w)

定義函數(shù),生成自己的停用詞詞典,得到一個文件。

我找的4個停用詞詞典下載地址:https://gitcode.net/mirrors/goto456/stopwords/-/tree/master

后面我會把自己整合好的停用詞詞典上傳。

# 這段代碼只用跑一次,以后可以直接用這個文件
# 自己給停用詞文件起好名字(路徑),作為投入函數(shù)的參數(shù)
def get_mystopwords_file(mystopwords_file_name):
    stopwords_path_ls = ["baidu_stopwords.txt", "cn_stopwords.txt", "hit_stopwords.txt", "scu_stopwords.txt"]
    stopwords_set = set() # 集合可以自動去重
    for p in stopwords_path_ls:
        with open(p, 'r', encoding = 'utf-8') as stopwords_file:
            for stopword in stopwords_file:
                if u'\u4e00'<= stopword[0] <= u'\u9fff':  # 只放中文的停用詞
                    stopwords_set.add(stopword.strip('\n'))
    with open(mystopwords_file_name, 'w') as mystopwords_file:
        for stopword in stopwords_set:
            mystopwords_file.write(stopword + '\n')

定義函數(shù),讀取停用詞詞典文件,得到一個停用詞列表。

# 可以根據(jù)實際需要,手動添加或刪除停用詞
def get_mystopwords_list(mystopwords_file_name):
    mystopwords_ls = []
    with open(mystopwords_file_name, 'r') as mystopwords_file:
        for stopword in mystopwords_file:
            mystopwords_ls.append(stopword.strip('\n'))
    # 對于一些高頻出現(xiàn)的、但對于分類沒什么特征幫助的詞,可以手動加進(jìn)停用詞列表
    zdy_stopword = ["建議", "信訪", "杭州"]
    for w in zdy_stopword:
        mystopwords_ls.append(w)
    # 對于一些停用詞表里有的、但認(rèn)為對后面分析有用的詞,可以手動從停用詞列表剔除
    zdy_not_stopword = [] # 目前還沒想好剔除什么詞,所以列表是空的
    for w in zdy_not_stopword:
        mystopwords_ls.remove(w)
    return mystopwords_ls

定義函數(shù),統(tǒng)一地鐵線路名稱格式。

# 投入?yún)?shù)是一個已經(jīng)分好詞的列表,返回一個處理好的列表
def unify_line_name(mylist):
    num_dict = {1:'一', 2:'二', 3:'三', 4:'四', 5:'五', 6:'六', 7:'七', 8:'八', 9:'九', \
               10:'十', 11:'十一', 12:'十二', 13:'十三', 14:'十四', 15:'十五', 16:'十六', 17:'十七', \
               18:'十八', 19:'十九', 20:'二十', 21:'二十一', 22:'二十二', 23:'二十三'}
    for i in range(len(mylist)):
        if fnmatch(mylist[i], "*號線") or fnmatch(mylist[i], "*號地鐵"):
            for j in range(len(num_dict),0,-1):
                if str(j) in mylist[i] or num_dict[j] in mylist[i]:
                    mylist[i] = "地鐵" + str(j) + "號線"
                    break
        if mylist[i] in ["機場快線", "機場軌道快線"]:
            mylist[i] = "地鐵19號線"
    return mylist

定義文本預(yù)處理的函數(shù),作用:去除無用字符、去除停用詞、統(tǒng)一地鐵線路名。

# 投入的參數(shù)是一個原始字符串,返回一個處理好的字符串(分好的詞之間空格連接)
# 要在使用這個函數(shù)之前弄好停用詞列表,列表名稱是mystopwords_ls
def mychuli(x):
    # 僅保留漢字、英文字母、阿拉伯?dāng)?shù)字
    mystr = ''.join(re.findall('[a-zA-Z0-9\u4e00-\u9fa5]',x))
    # 分詞,每個字符串變成一個列表
    mylist = jieba.lcut(mystr, cut_all = False)
    # 統(tǒng)一線路名稱
    mylist = unify_line_name(mylist)
    # 去除停用詞
    for word in mylist:
        if word in mystopwords_ls:
            mylist.remove(word)
    return ' '.join(mylist)

定義模型實際應(yīng)用的函數(shù),輸入文本,輸出分類結(jié)果。

# 輸入一條文本,經(jīng)預(yù)處理后投進(jìn)支持向量機模型進(jìn)行預(yù)測
def mypre():
    lebel_dict = dict(zip([0,1,2,3,4,5,6,7,8,9], le.inverse_transform([0,1,2,3,4,5,6,7,8,9])))
    mytext = input("輸入要預(yù)測的文本:")
    mytext_yichuli = mychuli(mytext)
    print("文本預(yù)處理結(jié)果:{}".format(mytext_yichuli))
    
    X_new = []
    X_new.append(mytext_yichuli)
    
    X_new_vec = tf.fit_transform(cv_new.fit_transform(X_new)).toarray()
    y_new_pre = SVM.predict(X_new_vec)
    
    print("模型預(yù)測的分類編號為:{}".format(y_new_pre[0]))
    print("對應(yīng)的分類名稱為:{}".format(lebel_dict[y_new_pre[0]]))

讀取文本,去重。

# 讀取語料文件
df = pd.read_csv("xxx.csv")
print("去重前:")
print(df.info())
# 去除重復(fù)數(shù)據(jù)
df1 = df.drop_duplicates()
print("去重后:")
print(df1.info())
print(df1.head())

Python 自然語言處理 文本分類 地鐵方面留言文本,python,自然語言處理,分類

jieba_fenci() # 加載自定義的分詞詞典
get_mystopwords_file("mystopwords.txt") # 得到一個整合好的停用詞文件,只用跑一次
mystopwords_ls = get_mystopwords_list("mystopwords.txt") # 得到停用詞列表

# 新建一列yichuli_title,放已經(jīng)處理好的文本數(shù)據(jù)
df1['yichuli_title'] = df1['title'].apply(mychuli)
# 給類別進(jìn)行編號
le = LabelEncoder()
le.fit(df1['class1'])
df1['yichuli_label'] = le.transform(df1['class1'])

# 把處理好的結(jié)果寫入一個新的csv文件,方便以后使用
# 用gb18030編碼可實現(xiàn)外面打開這個文件看顯示正常中文,而不是亂碼
df1.to_csv("test0908_result.csv", columns = ['yichuli_title', 'yichuli_label', 'class1'], encoding = "gb18030")

構(gòu)建訓(xùn)練集、測試集。?

# 讀取已經(jīng)處理好的csv文件
df1 = pd.read_csv("test0908_result.csv", encoding = "gb18030")

# 構(gòu)建訓(xùn)練集、測試集
cv = CountVectorizer()
tf = TfidfTransformer()
X = df1['yichuli_title']
y = df1['yichuli_label']
X = tf.fit_transform(cv.fit_transform(X)).toarray()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)

print(X_train.shape)
print(X_test.shape)

訓(xùn)練模型。

SVM = svm.LinearSVC() #支持向量機分類器LinearSVC
SVM.fit(X_train, y_train)
y_pre = SVM.predict(X_test)
print("支持向量機模型結(jié)果:")
print(classification_report(y_test, y_pre))
# 支持向量機的混淆矩陣
svm_confuse = pd.DataFrame(confusion_matrix(y_test, y_pre))
print(svm_confuse)

預(yù)測新數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-700523.html

cv_new = CountVectorizer(vocabulary = cv.vocabulary_)  # vocabulary參數(shù)保證向量維度與訓(xùn)練集一致
mypre()

到了這里,關(guān)于Python 自然語言處理 文本分類 地鐵方面留言文本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 自然語言處理入門:使用Python和NLTK進(jìn)行文本預(yù)處理

    文章標(biāo)題:自然語言處理入門:使用Python和NLTK進(jìn)行文本預(yù)處理 簡介 自然語言處理(NLP)是人工智能領(lǐng)域的一個重要分支,它致力于使計算機能夠理解、分析和生成人類語言。本文將介紹如何使用Python編程語言和NLTK(Natural Language Toolkit)庫進(jìn)行文本預(yù)處理,為后續(xù)的文本分析

    2024年02月19日
    瀏覽(23)
  • 【Python入門系列】第十八篇:Python自然語言處理和文本挖掘

    【Python入門系列】第十八篇:Python自然語言處理和文本挖掘

    Python自然語言處理(Natural Language Processing,簡稱NLP)和文本挖掘是一門涉及處理和分析人類語言的學(xué)科。它結(jié)合了計算機科學(xué)、人工智能和語言學(xué)的知識,旨在使計算機能夠理解、解釋和生成人類語言。 NLTK(Natural Language Toolkit):它是Python中最受歡迎的NLP庫之一,提供了豐

    2024年02月15日
    瀏覽(36)
  • 【自然語言處理】用Python從文本中刪除個人信息-第二部分

    【自然語言處理】用Python從文本中刪除個人信息-第二部分

    做一個簡單介紹, 酒架 年近48 ,有20多年IT工作經(jīng)歷,目前在一家500強做企業(yè)架構(gòu).因為工作需要,另外也因為興趣涉獵比較廣,為了自己學(xué)習(xí)建立了三個博客,分別是【全球IT瞭望】,【架構(gòu)師酒館】和【開發(fā)者開聊】,有更多的內(nèi)容分享,謝謝大家收藏。 企業(yè)架構(gòu)師需要

    2024年02月04日
    瀏覽(27)
  • 自然語言文本分類模型代碼

    ????????以下是一個基于PyTorch的文本分類模型的示例代碼,用于將給定的文本分為多個預(yù)定義類別: ????????該模型將輸入的文本作為整數(shù)序列傳遞給嵌入層,然后通過多層LSTM層進(jìn)行處理,最終輸出每個類別的預(yù)測概率。 ????????在訓(xùn)練模型之前,需要將文本序列

    2024年02月14日
    瀏覽(26)
  • 自然語言之文本預(yù)處理

    自然語言之文本預(yù)處理

    概念 分詞就是將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列的過程。在英文的行文中,單詞之間是以空格作為自然分界符的,而中文只是字、句和段能通過明顯的分界符來簡單劃界,唯獨詞沒有一個形式上的分界符。分詞過程就是找到這樣分界符的過程. 作用 詞作為語言

    2024年02月06日
    瀏覽(28)
  • 自然語言處理-文本表示: Embedding技術(shù)

    目錄 I. 引言 A. 文本表示介紹 B. 引入Embedding技術(shù)的重要性和應(yīng)用領(lǐng)域 II. 傳統(tǒng)文本表示方法 A. One-Hot編碼 B. 詞袋模型 C. TF-IDF III. 什么是文本表示-Embedding A. 定義和概念 B. Embedding的目標(biāo)和作用 IV. 常見Embedding技術(shù) A. Word2Vec 1. CBOW模型 2. Skip-gram模型 3. 結(jié)構(gòu)與訓(xùn)練方法 B. GloVe 1. 全局

    2024年02月16日
    瀏覽(94)
  • 【自然語言處理】實驗3,文本情感分析

    【自然語言處理】實驗3,文本情感分析

    清華大學(xué)馭風(fēng)計劃課程鏈接? 學(xué)堂在線 - 精品在線課程學(xué)習(xí)平臺 (xuetangx.com) 代碼和報告均為本人自己實現(xiàn)(實驗滿分),只展示主要任務(wù)實驗結(jié)果,如果需要詳細(xì)的實驗報告或者代碼可以私聊博主 有任何疑問或者問題,也歡迎私信博主,大家可以相互討論交流喲~~ 情感分析

    2024年02月19日
    瀏覽(23)
  • 自然語言處理實戰(zhàn)9-大語言模型的訓(xùn)練與文本生成過程

    大家好,我是微學(xué)AI,今天給大家介紹一下自然語言處理實戰(zhàn)項目9-大語言模型的訓(xùn)練與文本生成過程,詳細(xì)步驟介紹。大語言模型的訓(xùn)練是通過深度學(xué)習(xí)技術(shù)實現(xiàn)的。首先,需要準(zhǔn)備一個龐大的文本數(shù)據(jù)集作為訓(xùn)練樣本,這些文本可以是網(wǎng)頁、書籍、新聞等大量的非結(jié)構(gòu)化文

    2024年02月07日
    瀏覽(29)
  • 【自然語言處理(NLP)】基于ERNIE語言模型的文本語義匹配

    【自然語言處理(NLP)】基于ERNIE語言模型的文本語義匹配

    作者簡介 :在校大學(xué)生一枚,華為云享專家,阿里云專家博主,騰云先鋒(TDP)成員,云曦智劃項目總負(fù)責(zé)人,全國高等學(xué)校計算機教學(xué)與產(chǎn)業(yè)實踐資源建設(shè)專家委員會(TIPCC)志愿者,以及編程愛好者,期待和大家一起學(xué)習(xí),一起進(jìn)步~ . 博客主頁 : ぃ靈彧が的學(xué)習(xí)日志

    2024年02月10日
    瀏覽(31)
  • 自然語言處理 Paddle NLP - 檢索式文本問答-理論

    自然語言處理 Paddle NLP - 檢索式文本問答-理論

    基礎(chǔ) 自然語言處理(NLP) 自然語言處理PaddleNLP-詞向量應(yīng)用展示 自然語言處理(NLP)-前預(yù)訓(xùn)練時代的自監(jiān)督學(xué)習(xí) 自然語言處理PaddleNLP-預(yù)訓(xùn)練語言模型及應(yīng)用 自然語言處理PaddleNLP-文本語義相似度計算(ERNIE-Gram) 自然語言處理PaddleNLP-詞法分析技術(shù)及其應(yīng)用 自然語言處理Pa

    2024年02月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包