温馨提示×

spaCy中怎么进行文本分类

小亿
123
2024-05-11 19:10:55
栏目: 编程语言

在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中的文本分类功能是基于机器学习算法实现的,需要大量的训练数据和调优才能得到准确的分类结果。更复杂的文本分类任务可能需要更复杂的模型和更多的训练数据。

0