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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Text_Classification】学习到的语法知识

發布時間:2024/7/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Text_Classification】学习到的语法知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 任務

1.1 字典中每個種類的準確率

分母: 首先計算每個種類的總數!

for value in label:# get(value, num)函數的作用是獲取字典中value對應的鍵值, num=0指示初始值大小。label_cout[value] = label_cout.get(value, 0) + 1label_acc[value] = label_acc.get(value, 0) print(label_cout) print(label_acc)

分子:再次計算每個種類正確的數

第一步: 獲取種類字典:
錯誤的做法

#這是錯誤的做法,因為這樣做set集合是無序的! 順序就和分母不一樣了,無法進行后面的操作 label_acc = {label_text: 0 for label_text in set(label) # 將唯一化 } print(len(label_acc))

正確的是上面的

label_acc[value] = label_acc.get(value, 0)

第二步: 記錄正確類的個數

results = model.predict(data, max_seq_len=50, batch_size=1, use_gpu=True) #獲取每行輸入數據的預測結果 for idx, item in enumerate(results):sum = sum + 1; #所有的數據集總和if results[idx] == label[idx]: # print("OHHHH data: {}".format(data[idx]), "predict:{}".format(results[idx]),# "right:{}".format(label[idx]))right = right + 1; #如果是正確的,那么就加一print(results[idx])label_acc[results[idx]] += 1 #正確的,則從字典中尋找到指定key也加一

第三步: 相除得到準確率

#由于我們在定義兩個字典時,key標簽都是對應的,所以直接除,并更新label_acc即可 for key in label_acc.keys():label_acc[key] = label_acc[key] / label_cout[key]

1.2. 如何將分類數值化

前提: 你得有輸出結果以及label

label_list = ['城市事件類;宣傳廣告', '城市事件類;擴充類別', '城市事件類;街面秩序','城市部件類;市政公用設施', '城市事件類;市容環境', '城市部件類;擴充類別', '城市事件類;施工管理', '城市部件類;園林綠化', '環境保護類;其他', '文明城市創建類;其他',]label_map = { #必須是指定的格式idx: label_text for idx, label_text in enumerate(label_list) } model = hub.Module(name='ernie_tiny',version='2.0.1',task='seq-cls',load_checkpoint='/home/wxx/progressfiles/project_pc_NLP/Texts_Classification/model/ernie_text_cls/best_model/model.pdparams',label_map=label_map)results = model.predict(data, max_seq_len=50, batch_size=1, use_gpu=True)

之后就用兩個list就夠了!

n_label = [] n_results = [] for item in results:for key in label_map:if item == label_map[key]:n_results.append(key) for item in label:for key in label_map:if item == label_map[key]:n_label.append(key)

補充

1. set是無序的!!! 你改成set集合后序列就無序了,而計算每個類別的準確性,必須是類型順序不變的

2.從linux上下載文件

sz XXX

3. 讀CSV文件沒事,但是在寫入csv文件是亂碼

df.to_csv("/home/wxx/progressfiles/project_pc_NLP/Texts_Classification/res_all_label.csv", encoding='utf_8_sig', sep=",", index=0)

4. 如果出現在寫入csv文件時,單元格錯位問題,說明你的分隔符不對

5. 寫入excel文件中

https://blog.csdn.net/pikaqiubula/article/details/113781466

6. 將其它的放入到DataFrame中: 轉變為Series ,再設置columns

鏈接

df = pd.DataFrame(pd.Series(d1), columns=['right'])

7. python將字典轉換為dataframe數據框

python將字典轉換成dataframe數據框

8. DataFrame操作

定義!
列表定義!

字典列表定義!

import pandas as pdinp = [{'c1':10, 'c2':100}, {'c1':11, 'c2':110}, {'c1':12, 'c2':123}] df = pd.DataFrame(inp)print(df)

添加列!

DF的遍歷: https://www.jb51.net/article/172623.htm

9. 更好的放入到DF中

text_a.append(data[idx]) label_wrong.append(item) label_right.append(label[idx])df = pd.DataFrame() df['text_a'] = pd.Series(text_a) df['wrong_label'] = label_wrong df['right_label'] = label_right

10. 代碼解決F1_score

鏈接

總結

以上是生活随笔為你收集整理的【Text_Classification】学习到的语法知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。