在spaCy中进行文本分类可以通过训练一个文本分类器来实现。下面是一个简单的示例代码:
import spacy import random from spacy.util import minibatch, compounding # 加载spaCy模型 nlp = spacy.load("en_core_web_sm") # 准备训练数据 train_data = https://www.yisu.com/ask/["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中的文本分类功能是基于机器学习算法实现的,需要大量的训练数据和调优才能得到准确的分类结果。更复杂的文本分类任务可能需要更复杂的模型和更多的训练数据。