2024.12.6

qing meng 发布于 2024-12-06 244 次阅读


技术点

SpaCy(英文分词,也支持其他语言)

分词

# 导入spacy库
import spacy 
# 加载英文语言模型
# 注意:在第一次运行时需要下载模型,之后就可以直接加载了
nlp = spacy.load('en_core_web_sm') 
# 定义一段英文文本
text = "Hello, how are you doing today?" 
# 使用加载的语言模型处理文本
# 该函数会返回一个Doc对象,Doc对象包含了文本的很多信息,包括分词结果
doc = nlp(text) 
# 遍历Doc对象中的每个token,并打印出来
# token是SpaCy中的一个概念,代表文本中的一个单词或标点符号
for token in doc:    
    print(token.text)

逐行分析:

导入spacy库,这是进行自然语言处理的另一个强大库。
加载英文语言模型,这是SpaCy进行分词和其他NLP任务所依赖的预训练模型。
定义一段英文文本,作为我们要进行分词处理的输入。
使用加载的语言模型处理文本,返回一个Doc对象。Doc对象包含了文本的很多信息,比如分词结果、词性标注等。
遍历Doc对象中的每个token,并打印出token的文本内容。token是SpaCy中的一个核心概念,它代表文本中的一个单词或标点符号。

去停用词

import spacy 
# 加载英文模型
nlp = spacy.load("en_core_web_sm") 
# 示例文本
text = "This is a sample sentence, showing off the stop words filtration." 
# 步骤1:使用SpaCy处理文本
doc = nlp(text) 
# 步骤2:去停用词
filtered_words = [token.text for token in doc if not token.is_stop] 
# 打印结果
print(filtered_words)

逐行分析:

import spacy:导入SpaCy库。
nlp = spacy.load("en_core_web_sm"):加载英文模型(这里使用的是小型模型en_core_web_sm)。
text = "This is a sample sentence, showing off the stop words filtration.":定义示例文本。
doc = nlp(text):使用SpaCy模型处理文本,生成一个Doc对象。
filtered_words = [token.text for token in doc if not token.is_stop]:使用列表推导式去停用词。对于doc中的每个token(即单词或标点符号等),如果它不是停用词(token.is_stop为False),则将其文本(token.text)添加到filtered_words列表中。
print(filtered_words):打印去停用词后的单词列表。

词形还原与词干提取

import spacy 
# 加载SpaCy的英语模型
nlp = spacy.load("en_core_web_sm") 
# 示例句子
text = "The cars are running better than they went yesterday." 
# 使用SpaCy处理文本
doc = nlp(text) 
# 词形还原
lemmatized_words = [token.lemma_ for token in doc] 
# SpaCy不直接提供词干提取功能,但我们可以使用token.text来获取原始形式
# 如果真的需要词干提取,可能需要结合其他库或自定义函数 
print("原始单词:", [token.text for token in doc])
print("词形还原后:", lemmatized_words)

导入spacy库。
加载SpaCy的英语模型en_core_web_sm。
创建一个包含示例句子的字符串。
使用SpaCy处理这个句子,得到一个Doc对象。
使用列表推导式遍历Doc对象中的每个Token,并获取其词形还原形式(lemma_属性)。
打印原始单词(通过token.text获取)和词形还原后的单词列表。