在spaCy中進行文本分類可以通過訓練一個文本分類器來實現。下面是一個簡單的示例代碼:
import spacy
import random
from spacy.util import minibatch, compounding
# 加載spaCy模型
nlp = spacy.load("en_core_web_sm")
# 準備訓練數據
train_data = [
("This is a good movie", {"cats": {"POSITIVE": 1.0, "NEGATIVE": 0.0}}),
("I don't like this film", {"cats": {"POSITIVE": 0.0, "NEGATIVE": 1.0}}),
# 添加更多的訓練數據
]
# 設置文本分類器
textcat = nlp.create_pipe("textcat", config={"exclusive_classes": True, "architecture": "simple_cnn"})
nlp.add_pipe(textcat, last=True)
textcat.add_label("POSITIVE")
textcat.add_label("NEGATIVE")
# 訓練文本分類器
random.seed(1)
spacy.util.fix_random_seed(1)
optimizer = nlp.begin_training()
for i in range(10):
random.shuffle(train_data)
losses = {}
batches = minibatch(train_data, size=compounding(4.0, 32.0, 1.001))
for batch in batches:
texts, annotations = zip(*batch)
nlp.update(texts, annotations, sgd=optimizer, drop=0.2, losses=losses)
print(losses)
# 測試文本分類器
test_text = "This film is amazing"
doc = nlp(test_text)
print(doc.cats)
在上面的示例中,我們首先加載了spaCy的小型英文模型,并準備了一些訓練數據。然后創建了一個簡單的文本分類器,并使用訓練數據對其進行訓練。最后,我們對一個測試文本進行分類并輸出分類結果。
需要注意的是,spaCy中的文本分類功能是基于機器學習算法實現的,需要大量的訓練數據和調優才能得到準確的分類結果。更復雜的文本分類任務可能需要更復雜的模型和更多的訓練數據。