什么是自然语言处理:
在计算机领域, NLP(Natural Language Processing),也就是人们常说的「自然语言处理」,就是研究如何让计算机读懂人类语言。 这包括,既要能让计算机理解自然语言文本的意义,也能以自然语言文本来表达给定的深层的意图、思想等。
自然语言处理的难点:
1.语言是没有规律的,或者说规律是错综复杂的。
2.语言是可以自由组合的,可以组合复杂的语言表达。
3.语言是一个开放集合,可以发明创造新的表达方式(网络热词)。
4.语言需要联系到实践知识,有一定的先验知识依赖。
5.语言的使用要基于场景、环境和上下文。
NLP具体任务:
包括自然语言理解( Natural Language Understanding, NLU)和自然语言生成( Natural Language Generation, NLG)两部分。 注:NLP是典型边缘交叉学科,涉及到语言科学、计算机科学、数学、认知学、逻辑学等,是关注计算机和人类(自然)语言之间的相互作用的领域。
NLP——从人类语言到空间向量
文本预处理:
分词处理(tokenize):切分输入的语句,英文可以切分成单词,中文可以切分成单个字(注:分词方式有很多)。 词嵌入(word embedding):将切分后的单词/字映射到一个高维空间中,用一个向量表示(注:词/字 => 数字索引 => 高维向量)。
中文预处理过程:代码测试
输入:“你好啊!” Tokenize:[START, 你, 好, 啊, !, END]
字典查找:[1, 6677, 5240, 6019, 6466, 2] embedding:[v0, v1, v2, v3, v4, v5]
代码:
from torchtext.data import get_tokenizer
def chinese_tokenizer(inputs: str):
return list(inputs)
def chinese_tokenizer_with_pad(inputs: str):
return inputs.split()
if __name__ == '__main__':
# token用于切分语句
# 英文token 需要空格
tokenizer = get_tokenizer("basic_english")
tokens = tokenizer("You can now install TorchText using pip!")
print(tokens)
# 英文token 需要空格
tokens = chinese_tokenizer_with_pad("You can now install TorchText using pip !")
print(tokens)
# 中文token 不需要空格
tokens = chinese_tokenizer("你好啊!") #
print(tokens)
# 中文token 需要空格
tokens = chinese_tokenizer_with_pad("你 好 啊 !")
print(tokens)
分享人:任静