使用書籍《pytroch自然語言處理入門與實戰》
1.常用庫
numpy 科學計算
matplotlib 圖表視覺化
scikit-learn 資料探勘和資料分析
nltk 包含50種語料和常見演算法
spacy 實體命名,預訓練詞向量 需要先安裝對應語言的模型
jieba 中文分詞
pkuseg pku論文的中文分詞
wn 載入使用wordnet的包
pandas 資料處理
2.python處理字串
1.str型別
不可變物件
ord()獲得字元編碼值
chr()編碼值轉換字元
split+join轉換為列表
常用方法
find 返回第一次出現下標
rfind 倒數第一次出現下標
count 出現次數
startswith 是否以某串開頭
endswith 是否以某串結尾
isdigit 是否為數字
isalpha 是否為字母
isupper 是否為大寫字母
istrip 刪除開頭指定字元
rstrip 刪除結尾指定字元
strip 刪除首尾指定字元
replace 字元替換
center 指定寬度字串居中
2.bytes型別
>>> byte1 = b"hello"
與字串轉換
>>> print(str(byte1))
b'hello'
>>> print((byte1.decode()))
hello
str可以用encode指定一種編碼方式編碼為byte
3.StringIO類
可變
>>> import io
>>> sio = io.StringIO()
>>> sio.write('hello')
5
>>> sio.write(' ')
1
>>> sio.write('world')
5
>>> print(sio.getvalue())
hello world
>>> sio.close()
3.python 處理語料
1.讀取語料
txt文字
f = open('text.txt',encoding='utf8') #用utf8編碼開啟檔案
words = [] #定義空的list用於存放所有詞語
for l in f:
word = l.strip().splt(' ') # 刪除行尾換行符,切分單詞和中文
words.append(word)
f.close() #關閉檔案
csv
import csv
f = open('file.csv',encoding='utf8') #用utf8編碼開啟檔案
reader = csv.reader(f)
lines = []
for l in reader:
lines.append(l)
json
import json
f = open('file.json', 'r', encoding='utf8') # 用utf8編碼以讀取模式開啟檔案
data = json.load(f) # 直接讀取JSON檔案內容
2,去重
使用set去重(add新增,in判斷是否在內),大資料使用BitMap或Bloom Filter
3.停用詞
去GitHub找stopwords
4.編輯距離
衡量兩個字串之間的差異。定義了三種操作:插入一個字元,刪除一個字元,替換一個字元,編輯距離就是一個字串變成另一個字串的最小操作,可以使用dp來進行計算
def minDistance(word1:str,word2:str)->int:
n = len(word1)
m = len(word2)
dp = [[0]*(m+1) for _ in range(n+1)]
for i in range(m+1):dp[0][i]=I
for i in range(n+1):dp[i][0]=i
for i in range(1,n+1):
for j in range(1,m+1):
if word1[i-1] == word2[j-1]:
dp[i][j] = dp[i-1][j-1]
else
dp[i][j] = min(dp[i][j-1],dp[i-1][j],dp[i-1][j-1])+1
return dp[-1][-1] #最後一個元素
5.文字規範化
6.分詞
7 .詞頻-逆文字頻率
8.獨熱編碼
4.PyTorch & Transformers的安裝
PyTorch
【布客】PyTorch 中文翻譯 (apachecn.org)
英偉達顯示卡
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
CPU
pip3 install torch torchvision torchaudio
檢查
>>> import torch
>>> torch.version
<module 'torch.version' from '\\.conda\\envs\\nlp\\Lib\\site-packages\\torch\\version.py'>
>>> torch.cuda.is_available
<function is_available at 0x000001F4D67EE0C0>
Transformers
pip install transformers
檢查
>>> from transformers import pipeline
>>> print(pipeline('sentiment-analysis')('I love you'))
No model was supplied, defaulted to distilbert/distilbert-base-uncased-finetuned-sst-2-english and revision af0f99b (https://huggingface.co/distilbert/distilbert-base-uncased-finetuned-sst-2-english).
Using a pipeline without specifying a model name and revision in production is not recommended.
[{'label': 'POSITIVE', 'score': 0.9998656511306763}]
如果報錯,可能是網路原因
requests.exceptions.SSLError: (MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /distilbert/distilbert-base-uncased-finetuned-sst-2-english/resolve/main/config.json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)')))"), '(Request ID: cf626477-ad07-40c9-b4ce-dcf8371fe213)')