NLP學習1

qbning發表於2024-09-16

使用書籍《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)')

相關文章