利用fastnlp做的第乙個中文情感分析Demo

2021-10-07 07:23:05 字數 2615 閱讀 5776

專案資料集原始碼在這裡:

然後在此基礎上進行改進。

1.匯入包+初始化

#匯入pytorch包

import torch

import torch.nn as nn

from fastnlp.io.loader import csvloader

dataset_loader = csvloader(headers=('raw_words','target'), sep='\t')

testset_loader = csvloader( headers=['raw_words'],sep='\t')

2. 資料讀取

# 表示將csv檔案中每一行的第一項將填入'raw_words' field,第二項填入'target' field。

# 其中項之間由'\t'分割開來

train_path=r'train_shuffle.txt'

test_path=r'new_test_handout.txt'

dataset = dataset_loader._load(train_path)

testset = testset_loader._load(test_path)

3.資料處理

import jieba

from itertools import chain

print(jieba.__version__)

# from itertools import chain

#     @params:

#         data: 資料的列表,列表中的每個元素為 [文字字串,0/1標籤] 二元組

#     @return: 切分詞後的文字的列表,列表中的每個元素為切分後的詞序列

def get_tokenized(data,words=true):

def tokenizer(text):

return [tok for tok in jieba.cut(text, cut_all=false)]

if words:

#按詞語進行編碼

return tokenizer(data)

else:

#按字進行編碼

return [tokenizer(review) for review in data]

from fastnlp import vocabulary

#將dataset按照ratio的比例拆分,返回兩個dataset

#ratio (float) -- 0train_data, dev_data = dataset.split(0.1, shuffle=false)

vocab = vocabulary(min_freq=2).from_dataset(dataset, field_name='words')

vocab.index_dataset(train_data, dev_data, testset, field_name='words', new_field_name='words')

4. 模型搭建

# 預處理模型

from fastnlp.embeddings import staticembedding,stackembedding

fastnlp_embed = staticembedding(vocab, model_dir_or_name='cn-char-fastnlp-100d',min_freq=2)

from fastnlp.models import cnntext

model_cnn = cnntext(fastnlp_embed, num_classes=2,dropout=0.1)

print(model_cnn)

5.進行訓練

from fastnlp import trainer, crossentropyloss, accuracymetric,bceloss

trainer_cnn = trainer(model=model_cnn, train_data=train_data, dev_data=dev_data,loss=crossentropyloss(), metrics=accuracymetric())

trainer_cnn.train()

6.匯出結果

demo=

#批量進行資料**

import pandas as pd

import torch

#開始進行**,並將結果儲存到提交格式檔案中,提交平台

# summission_path = r'data\comments9120'

submission = batch_predict(model_cnn,testset)

submission.to_csv('fastnlpdemo.csv',encoding='utf-8')

# submission.to_csv(summission_path+'\submission-cnn-20200229-words.csv', index=false)

工作後的第乙個中秋總結

出來工作一段時間了,輾轉崑山 上海 杭州,現在算是安定下來了。不出意外的話可能也會選擇長期在這邊發展!回頭想想網上的畢業失業論,也只是 博眼球,學生跟著瞎起鬨。大學乍樣的付出,和你工作的待遇是成正比的。至少對於我們這個行業,我是這麼認為的。很慶幸大學的幾年暑假沒有選擇,體驗生活,鍛鍊人生,上電子廠或...

做第乙個專案的收穫

到如今做了第乙個生平第乙個專案,雖然還沒有完工,但是也差不多了。想想這幾個月專心只做這麼一件事,與之前學習不求甚解的心態差別很大。做專案是很花費時間的,收穫當然與之前個人學習的收穫是很不一樣的,現在總結一下。工作計畫 在剛接到專案的時候,就需要大致擬定乙個專案進度計畫。在整個專案進行過程中,要不斷總...

python第乙個程式設計 第乙個 Python 程式

簡述 安裝完 python 後,windows 中 開始選單或安裝目錄下就會有 idle 開發 python 程式的基本 ide 整合開發環境 幫助手冊 模組文件等。linux 中 只需要在命令列中輸入 python 命令即可啟動互動式程式設計。互動式程式設計 互動式程式設計不需要建立指令碼檔案,是...