# NLP一般思路

## 分词

* 基于词典匹配。正向匹配，反向匹配，双向匹配
* 全切分路径技术
* 机器学习：隐马尔可夫模型、条件随机场等
* 看成是序列标注问题，将一个句子中的每个字标记成各种标签`{B, M, E,S}`

  B表示当前字为一个词的开始，M表示当前字为一个词的中间位置，E表示当前字为一个词的结束位置，S表示单字词

  > 我是中国人
  >
  > 我 是 中国人
  >
  > 我/S 是/S 中/B 国/M 人/E

## 词性标注

确定一个句子中各个词的词性，它是和分词密切相关的一个问题

$$(w\_1,...,w\_n) \to (s\_1,...,s\_n)$$

输入序列是一个句子的单词序列，每个时刻的输入向量是单词的one-hot编码向量，网络的输出为单词属于某一类 词的概率，此时输出层可以采用softmax回归，得到词性{v,n,a...}概率

## 命名实体识别（Named Entity Recognition，简称NER）

目标是识别文本中有特定含义的实体，如人名、地名、机构名称、专有名词等，属于未登录词识别的范畴

> 和其他自然语言处理问题相比存在的一个困难是训练样本的缺乏，因为未登录词很少有重复的，基本上都是新词
>
> 直接用序列标注的方法解决命名实体识别，思路和分词类似，要识别出句子里所有的专名词
>
> {BN, MN, EN, BA, MA, EA, BO, MO, EO,O}
>
> BN表示这个字是人名的开始，MN表示人名的中间字，EN表示人名的结束；BA表示地名的开始，MA表示地名的 中间字，EA表示地名的结束；BO表示机构名称的开始，MO表示机构名称的中间字，EO表示机构名称的结束；O 表示这个字不是命名实体

## 文本分类

序列分类问题，输入为词序列，输出为类别编码

输入的词序列可以用one-hot编码，或者word2vec表示。循环神经网络最后一个时刻的输出值作为分类的结果， 此时汇集了文本所有的信息


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://im-qianuxn.gitbook.io/pytorch/ji-suan-ji/shen-du-xue-xi-li-lun/nlp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
