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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

二十、文本情感分类

發布時間:2024/9/16 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二十、文本情感分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 文本情感傾向性分析

1.1 情感分析的概念

  • 簡單的說,我們可以將情感分析(sentiment classification)任務定義為一個分類問題,即指定一個文本輸入,機器通過對文本進行分析、處理、歸納和推理后自動輸出結論,如下圖所示:

1.2 情感分析的任務

  • 通常情況下,人們把情感分析任務看成一個三分類問題。
    • 正向: 表示正面積極的情感,如高興,幸福,驚喜,期待等。
    • 負向: 表示負面消極的情感,如難過,傷心,憤怒,驚恐等。
    • 其他: 其他類型的情感。

1.3 情感分析的作用

  • 利用機器自動分析這些情感傾向,不但有助于幫助企業了解消費者對其產品的感受,為產品改進提供依據;同時還有助于企業分析商業伙伴們的態度,以便更好地進行商業決策

2. 情感分析的數據預處理

2.1 數據集介紹

  • IMDB電影評論數據,地址:http://ai.stanford.edu/~amaas/data/sentiment/,這是一份包含了5萬條流行電影的評論數據,其中訓練集25000條,測試集25000條。

2.2 思路分析

  • 根據上述的樣本,需要使用pytorch完成模型,實現對評論情感進行預測。首先可以把上述問題定義為分類問題,情感評分分為1-10,10個類別。那么根據之前的經驗,我們的大致流程如下:準備數據集、模型構建、模型訓練、模型評估。

2.3 代碼實現

  • 步驟一:定義tokenize的方法
def tokenize(text):fileters = ['!', '"', '#', '$', '%', '&', '\(', '\)', '\*', '\+', ',', '-', '\.', '/', ':', ';', '<', '=', '>','\?', '@', '\[', '\\', '\]', '^', '_', '`', '\{', '\|', '\}', '~', '\t', '\n', '\x97', '\x96', '”', '“', ]text = re.sub("<.*?>", " ", text, flags=re.S)text = re.sub("|".join(fileters), " ", text, flags=re.S)return [i.strip() for i in text.split()]
  • 步驟二:準備dataset
# 2. 準備dataset class ImdbDataset(Dataset):def __init__(self, mode):# 調用父類初始化方法初始化繼承的屬性super(ImdbDataset, self).__init__()if mode == "train":text_path = [os.path.join(data_base_path, i) for i in ["train/neg", "train/pos"]]else:text_path = [os.path.join(data_base_path, i) for i in ["test/neg", "test/pos"]]self.total_file_path_list = []for i in text_path:self.total_file_path_list.extend([os.path.join(i, j) for j in os.listdir(i)])def __getitem__(self, idx):cur_path = self.total_file_path_list[idx]cur_filename = os.path.basename(cur_path)label = int(cur_filename.split("_")[-1].split(".")[0]) - 1 # 處理標題,獲取label,轉化為從[0-9]text = tokenize(open(cur_path).read().strip()) # 直接按照空格進行分詞return label, textdef __len__(self):return len(self.total_file_path_list)
  • 步驟三:實例化 DataLoader
dataset = ImdbDataset(mode="train")def collate_fn(batch):# batch是list,其中是一個一個元組,每個元組是dataset中__getitem__的結果content,label = list(zip(*batch))return content,labeldataloader = DataLoader(dataset=dataset, batch_size=10, shuffle=True,collate_fn=collate_fn)
  • 步驟四:查看數據結果
count = 0 for idx, (label, text) in enumerate(dataloader):print("idx:", idx)print("table:", label)print("text:", text)count += 1if count == 1:break

總結

以上是生活随笔為你收集整理的二十、文本情感分类的全部內容,希望文章能夠幫你解決所遇到的問題。

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