iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
AI & Data

機器學習與前端網頁系列 第 23

Day 23 bert 文字情感分類-2

在這裡我們要將訓練集替換成中文,但是原本資料集的資料夾格式如下:

tf.keras.preprocessing.text_dataset_from_directory
aclImdb_v1.tar.gz

分為訓練和測試兩個資料夾,而在這之下有 neg 和 pos 資料夾分類正向和負向

neg 和 pos 有數個 txt 檔案

每個檔案中有一句評論

而中文旅館評論是一個單檔的 csv,並使用 label 表示正負向

label,review
1,"距离川沙公路较近,但是公交指示不对,如果是""蔡陆线""的话,会非常麻烦.建议用别的路线.房间较为简单."
1,商务大床房,房间很大,床有2M宽,整体感觉经济实惠不错!
1,早餐太差,无论去多少人,那边也不加食品的。酒店应该重视一下这个问题了。房间本身很好。
1,宾馆在小街道上,不大好找,但还好北京热心同胞很多~宾馆设施跟介绍的差不多,房间很小,确实挺小,但加上低价位因素,还是无超所值的;环境不错,就在小胡同内,安静整洁,暖气好足-_-||。。。呵还有一大优势就是从宾馆出发,步行不到十分钟就可以到梅兰芳故居等等,京味小胡同,北海距离好近呢。总之,不错。推荐给节约消费的自助游朋友~比较划算,附近特色小吃很多~
1,"CBD中心,周围没什么店铺,说5星有点勉强.不知道为什么卫生间没有电吹风"

這裡使用 pandas 讀取 csv,洗牌後將 80% 的分給 train_df,20% 分給 test_df。
之後根據 label 的值,把 label 1 寫入至 pos,label 0 寫入至 neg。

import pandas as pd
import os
all_df = pd.read_csv("ChnSentiCorp_htl_all.csv")

shuffled = all_df.sample(frac=1).reset_index(drop=True)

train_df = shuffled.iloc[:int(len(shuffled)*0.8)]
test_df = shuffled.iloc[int(len(shuffled)*0.8):]

mypaths = ["chinese/train/neg", "chinese/train/pos", "chinese/test/neg", "chinese/test/pos"]
for i in mypaths:
  os.makedirs(i, exist_ok=True)

for i, row in train_df.iterrows():
  if row["label"] == 1:
    with open("chinese/train/pos/" + str(i) + ".txt", "w", encoding="UTF-8") as f:
      f.write(str(row["review"]))
  if row["label"] == 0:
    with open("chinese/train/neg/" + str(i) + ".txt", "w", encoding="UTF-8") as f:
      f.write(str(row["review"]))


for i, row in test_df.iterrows():
  if row["label"] == 1:
    with open("chinese/test/pos/" + str(i) + ".txt", "w", encoding="UTF-8") as f:
      f.write(str(row["review"]))
  if row["label"] == 0:
    with open("chinese/test/neg/" + str(i) + ".txt", "w", encoding="UTF-8") as f:
      f.write(str(row["review"]))

結果如下


上一篇
Day 22 bert 文字情感分類
下一篇
Day 24 bert 文字情感分類-3
系列文
機器學習與前端網頁30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言