NLP 中文文字分類 詳細

2021-10-07 23:16:51 字數 1745 閱讀 4567

實現如下customprocessor

class customprocessor(dataprocessor):

def get_train_examples(self, data_dir):

return self._create_examples(

self._read_tsv(os.path.join(data_dir, "train.tsv")), "train")

def get_dev_examples(self, data_dir):

return self._create_examples(

self._read_tsv(os.path.join(data_dir, "dev.tsv")), "dev")

def get_test_examples(self, data_dir):

return self._create_examples(

self._read_tsv(os.path.join(data_dir, "test.tsv")), "test")

def get_labels(self):

# 這裡返回的為具體的你的分類的類別

return ["1", "2", "3", "4", "5", "12", "14"]

export data_dir=上面自己建的語料路徑

export bert_base_dir=預訓練模型所在路徑

python run_classifier.py \

--task_name=mytask \

--do_train=true \

--do_eval=true \

--data_dir=$data_dir/ \

--vocab_file=$bert_base_dir/vocab.txt \

--bert_config_file=$bert_base_dir/bert_config.json \

--init_checkpoint=$bert_base_dir/bert_model.ckpt \

--max_seq_length=128 \

--train_batch_size=32 \

--learning_rate=2e-5 \

--num_train_epochs=3.0 \

--output_dir=/output12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

2728

下面的幾個引數,do_train代表是否進行fine tune,do_eval代表是否進行evaluation,還有未出現的引數do_predict代表是否進行**。如果不需要進行fine tune,或者顯示卡配置太低的話,可以將do_trian去掉。max_seq_length代表了句子的最長長度,當視訊記憶體不足時,可以適當降低max_seq_length。

執行指令碼

./run.sh

1執行的時間可能會有點久,視配置而定,會在output_dir下面生成乙個eval_results.txt檔案:

eval_accuracy = 0.8503984

eval_loss = 0.47183684

global_step = 6588

loss = 0.4718368412

34這樣說明我們就執行成功了。在output_dir也會有fine-tune(微調)之後的模型檔案。

中文文字分句

關於文字分句這點,說簡單也簡單,說複雜也複雜。一般的自然語言處理任務中對這點要求並不嚴格,一般按照句末標點切分即可。也有一些專門從事文字相關專案的行業,可能就會有較高的要求,想100 分句正確是要考慮許多語言本身語法的,這裡算是寫個中等水平的。以 背影 中的一段話為例 我心裡暗笑他的迂 他們只認得錢...

2020 12 13 NLP 中文短文本分類

nlp 中文短文本分類 wordcloud 製作詞云 import jieba import pandas as pd import numpy as np from scipy.misc import imread from wordcloud import wordcloud,imagecolo...

NLP 文字分類思路

github部落格傳送門 csdn部落格傳送門 載入詞嵌入矩陣 一般情況為字典形式 載入任務資料 一般情況為字串形式 我喜歡程式設計 或者 i love play computer 對載入的所有任務資料求乙個最大字串長度 以便後面將所有資料填充至一樣的長度 將每條資料以每個樣本的形式存入列表 我在家...