在自然语言处理中,分词(Tokenization)是指将自然语言文本中的连续字符序列划分为一个个有意义的符号(token)的过程。分词是文本预处理中的一项基础任务,它是自然语言处理中的一环,而且是非常重要的一环。
在英文中,单词之间通常由空格隔开,因此英文单词的分词比较容易实现。但是,在中文等没有空格的语言中,分词就变得更加困难和复杂。中文分词需要考虑语句结构、上下文语境和词性等因素,因此很多算法都被提出来用于解决中文分词的问题。
分词对于自然语言处理很重要,它是句子理解和语义分析的基础。分词能够将一段文本拆分成有意义的单元,进而为后续的文本处理打下基础。例如,在语音识别、机器翻译、信息检索、文本分类和情感分析等应用中,都需要进行分词。
例:“请输入文本”
{
"result": [
{
"id": "0",
"word": "请",
"tags": [
"基本词-中文"
]
},
{
"id": "1",
"word": "输入",
"tags": [
"基本词-中文",
"产品类型修饰词"
]
},
{
"id": "2",
"word": "文本",
"tags": [
"基本词-中文",
"产品类型修饰词"
]
}
],
"success": true
}
该能力可以为自然语言文本中的每个词汇赋予一个词性,如名词、动词、介词
例:“请输入文本”
pos:词性 word:词
{
"result": [
{
"pos": "VV",
"word": "请"
},
{
"pos": "VV",
"word": "输入"
},
{
"pos": "NN",
"word": "文本"
}
],
"success": true
}
中文命名实体识别是一种自然语言处理技术,用于从中文文本中识别出具有特定意义的实体,如人名、地名、组织机构名等。这种技术通常利用机器学习算法和语料库进行训练,并可以应用于信息提取、知识图谱构建、智能问答等多个领域。常见的中文命名实体识别工具包括Stanford NER、LTP、THULAC等。
例:“请输入文本”
{
"result": [
{
"synonym": "",
"weight": "0.100000",
"tag": "普通词",
"word": "请"
},
{
"synonym": "",
"weight": "0.100000",
"tag": "普通词",
"word": "输入"
},
{
"synonym": "",
"weight": "1.000000",
"tag": "品类",
"word": "文本"
}
],
"success": true
}
在自然语言处理(NLP)中,中心词提取通过给每个词计算一个相关性分数来衡量每个词与句子的相关性程度,进而识别并提取出句子的中心词。
这些关键词或短语可以用于文本分类、信息检索、文本摘要等任务。常见的中心词提取算法包括基于词频的方法如TF-IDF、基于图论的方法如TextRank,以及主题模型如LDA等。其中,深度学习也提供了一些新的方法和技术,如Word2Vec、BERT等预训练模型。
通过分析句子中词与词之间的依存关系,从而捕捉到词语的句法结构信息(如主谓、动宾、定中等结构关系),并使用树状结构来表示句子的句法结构信息(如主谓宾、定状补等)
例:“小明爱中国”
{
"result": [
{
"head": 2,
"pos": "NR",
"id": 1,
"label": "SBV",
"word": "小明"
},
{
"head": 0,
"pos": "VV",
"id": 2,
"label": "ROOT",
"word": "爱"
},
{
"head": 2,
"pos": "NR",
"id": 3,
"label": "VOB",
"word": "中国"
}
],
"success": true
}
准确识别输入文本中出现的拼写错别字及其段落位置信息,并针对性给出正确的建议文本内容
例:我今天吃苹果,明天吃香姣
{
"result": {
"edits": [
{
"confidence": 0.8385,
"pos": 11,
"src": "姣",
"tgt": "蕉",
"type": "SpellingError"
}
],
"source": "我今天吃苹果,明天吃香姣",
"target": "我今天吃苹果,明天吃香蕉"
},
"success": true
}
文本摘要是将一篇长文本压缩为几个关键信息点的过程。常用的文本摘要方法包括:
提供不同文本之间相似度的计算,并输出一个介于0到1之间的分数,分数越大则文本之间的相似度越高。建议分数不要用于直接判断,可以作为特征,并按照范围进行分桶。
常用的文本相似度方法包括:
余弦相似度:通过计算两个向量之间的夹角余弦值来表示它们的相似程度。
编辑距离:通过计算将一个字符串转换成另一个字符串所需的最少编辑操作数来表示它们的相似程度。
Jaccard 相似度:通过计算两个集合的交集与并集之比来表示它们的相似程度。
Jaccard 相似度是一种常用于衡量文本相似性的指标,它可以基于文本中词语的集合来计算两个文本之间的相似度。其计算方式与数学中集合的 Jaccard 相似系数类似,具体定义为两个文本共同包含的词语数量除以它们所有包含的词语的数量之和。
如果设文本 A 和 B 中涉及的词语分别为 AA 和 BB,则 Jaccard 相似度计算公式为:
J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ ∗ J ∗ ( ∗ A ∗ , ∗ B ∗ ) = ∣ ∗ A ∗ ∪ ∗ B ∗ ∣ ∣ ∗ A ∗ ∩ ∗ B ∗ ∣ J(A,B) = \frac{|A \cap B|}{|A \cup B|}*J*(*A*,*B*)=∣*A*∪*B*∣∣*A*∩*B*∣ J(A,B)=∣A∪B∣∣A∩B∣∗J∗(∗A∗,∗B∗)=∣∗A∗∪∗B∗∣∣∗A∗∩∗B∗∣其中, ∩ ∩ 表示交集, ∪ ∪ 表示并集, ∣ . ∣ ∣ . ∣ 表示集合中元素的个数。 其中,\cap∩ 表示交集,\cup∪ 表示并集,|.|∣.∣ 表示集合中元素的个数。 其中,∩∩表示交集,∪∪表示并集,∣.∣∣.∣表示集合中元素的个数。
举个例子,假设有两句话:“我喜欢吃苹果”和“他也喜欢吃苹果”,则它们的 Jaccard 相似度可以如下计算:
句子 1 包含的词语集合 A = {我, 喜欢, 吃, 苹果}A={我,喜欢,吃,苹果}
句子 2 包含的词语集合 B = {他, 也, 喜欢, 吃, 苹果}B={他,也,喜欢,吃,苹果}
AA 与 BB 的交集为 {喜欢, 吃, 苹果}{喜欢,吃,苹果}
AA 与 BB 的并集为 {我, 他, 喜欢, 吃, 苹果, 也}{我,他,喜欢,吃,苹果,也}
因此,句子 1 和句子 2 的 Jaccard 相似度为
3 6 = 0.563 = 0.5 \frac{3}{6} = 0.563=0.5 63=0.563=0.5
词向量模型:通过将文本中的单词映射到一个向量空间中,然后基于向量之间的距离或余弦相似度来计算文本相似度。
预训练语言模型:使用预先训练好的神经网络来生成文本的表示,并根据这些表示来计算文本之间的相似度。
句子A:一条红色连衣裙
句子B:一条蓝色衣服
{
"result": [
{
"score": "0.16925383",
"flag": true
}
],
"success": true
}
针对带有主观描述的自然语言文本,可自动判断该文本的情感正负倾向并给出相应的结果
对用户输入的一段文本,映射到具体的类目上。以新闻资讯领域为例,可以将一段文本分为以下几个类目:港澳台、房产、军事、社会、财经、文娱、汽车、国际、教育、健康、美食、时政、法治、旅游、体育、数码科技、健康、动漫、反腐前沿。
有一篇文章讲的非常好,大家可以跳转观看:自然语言处理3:词向量 - 知乎 (zhihu.com)
【白话NLP】什么是词向量 - 知乎 (zhihu.com)