学习内容:分词的原理和算法(如基于规则、基于统计)。
工具:NLTK、jieba、SpaCy。
分词:就像是给一段长长的文字做“拆解工作”。想象一下,你有一大段话,里面包含了很多词语和句子,就像是一堆混在一起的乐高积木。分词呢,就是把这些积木(也就是词语)一个一个地挑出来,分开摆放,让它们各自独立。
比如说,有这么一句话:“我爱人工智能”,分词之后,就变成了“我 | 爱 | 人工智能”三个部分。这样,每个词语就被清晰地分开了,计算机就能更容易地理解这句话的意思了。
对于人工智能来说,分词是很重要的一个步骤。因为计算机不像我们人类,能够一眼就看出句子的结构。它们需要把句子拆分成更小的单元,也就是词语,然后再去分析这些词语之间的关系,才能理解整句话的意思。
所以,分词就像是给计算机准备“食材”,把大段的文字切割成它能“消化”的小块,让它能够更好地理解和处理语言。
NLTK(英文分词)
# 导入nltk库
import nltk
# 下载punkt数据包,这是NLTK进行分词所需要的模型
# 注意:这个下载只需要执行一次,之后即使再运行这段代码也不会重复下载
nltk.download('punkt')
# 从nltk.tokenize模块中导入word_tokenize函数
from nltk.tokenize import word_tokenize
# 定义一段英文文本
text = "Hello, how are you doing today?"
# 使用word_tokenize函数对文本进行分词
# 该函数会返回一个包含所有单词(包括标点符号)的列表
tokens = word_tokenize(text)
# 打印分词结果
print(tokens)
逐行分析:
- 导入nltk库,这是进行自然语言处理的基础库。
- 下载punkt数据包,这是NLTK进行分词所依赖的预训练模型。
- 从nltk.tokenize模块中导入word_tokenize函数,这个函数是用来进行分词的。
- 定义一段英文文本,作为我们要进行分词处理的输入。
- 调用word_tokenize函数对文本进行分词,将结果存储在tokens变量中。
- 打印tokens变量,查看分词结果。
jieba(中文分词)
# 导入jieba库
import jieba
# 定义一段中文文本
text = "这是一个用于分词的示例文本。"
# 使用jieba.cut函数对文本进行分词
# 该函数返回一个生成器,可以使用list函数将其转换为列表
tokens = jieba.cut(text)
# 将生成器转换为列表,并打印分词结果
print(list(tokens))
逐行分析:
- 导入jieba库,这是进行中文分词的基础库。
- 定义一段中文文本,作为我们要进行分词处理的输入。
- 调用jieba.cut函数对文本进行分词,该函数返回一个生成器,生成器中的每个元素都是一个分词后的单词。
- 使用list函数将生成器转换为列表,这样我们就可以看到所有的分词结果了。
- 打印分词结果列表。
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中的一个核心概念,它代表文本中的一个单词或标点符号。
(仅供参考)
Comments 1 条评论
博主 qing meng
帅