opennmt-tf 关键术语说明

1. 词嵌入向量WordEmbedding

定义:
词嵌入向量(WordEmbedding)是NLP里面一个重要的概念,我们可以利用WordEmbedding将一个单词转换成固定长度的向量表示,从而便于进行数学处理。本质上降低维度处理

详见:https://www.jianshu.com/p/2a76b7d3126b

2. 分词Tokenization

2.1 定义

2.1.1 目标(Goal)

将文本切分成单词序列(divide text into a sequence of words),单词指的是一串连续的字母数字并且其两端有空格;可能包含连字符和撇号但是没有其它标点符号

2.1.2 Tokenizatioan 容易吗?

2.1.2.1 什么是词(What’s a word)?

i. English:
  1. “Wash. vs wash”
  2. “won’t”, “John’s”
  3. “pro-Arab”, “the idea of a child-as-required-yuppie-possession must be motivating them”, “85-year-old grandmother”

ii. 东亚语言(East Asian languages):
  1. 词之间没有空格(words are not separated by white spaces)

2.1.2.2 分词(Word Segmentation)

i. 基于规则的方法(Rule-based approach): 基于词典和语法知识的形态分析(morphological analysis based on lexical and grammatical knowledge)
 ii. 基于语料库的方法(Corpus-based approach): 从语料中学习(learn from corpora(Ando&Lee, 2000))
 iii. 需要考虑的问题(Issues to consider): 覆盖面,歧义,准确性(coverage, ambiguity, accuracy)

2.1.2.3 统计切分方法的动机(Motivation for Statistical Segmentation)

i. 未登录词问题(Unknown words problem):
  ——存在领域术语和专有名词(presence of domain terms and proper names)
 ii. 语法约束可能不充分(Grammatical constrains may not be sufficient)
  ——例子(Example): 名词短语的交替切分(alternative segmentation of noun phrases)
 iii. 举例一
  1. Segmentation:sha-choh/ken/gyoh-mu/bu-choh
  2. Translation:“president/and/business/general/manager”
 iv. 举例二
  1. Segmentation:sha-choh/ken-gyoh/mu/bu-choh
  2. Translation:“president/subsidiary business/Tsutomi[a name]/general manag

2.2 标记化

默认情况下,OpenNMT-tf 需要并生成分词文本。因此,用户负责对输入进行分词,并使用他们选择的工具使输出无效。
但是,OpenNMT-tf提供了基于C ++ OpenNMT Tokenizer的分词工具,可以通过两种方式使用:
offline:使用提供的脚本在执行前手动对文本文件进行分词,并将输出解除声明以进行评估
online:配置执行以即时应用分词和去分词

注意:该pyonmttok软件包仅在Linux上受支持。

2.3 配置文件

YAML文件用于设置分词器选项,以确保数据准备和培训期间的一致性。例如,此配置使用OpenNMT分词器在简单的基于单词的标记化中定义:

mode: aggressive
joiner_annotate: true
segment_numbers: true
segment_alphabet_change: true

有关可用选项的完整列表,请参阅Tokenizer文档。

2.4 离线使用

您可以onmt-tokenize-text直接调用脚本并传递tokenizer配置:

echo "Hello world!" | onmt-tokenize-text --tokenizer_config config/tokenization/aggressive.yml
Hello world ■!

2.5 在线使用

在线使用一个关键特性是在训练期间即时分词。这样可以避免分词文件的需要,还可以提高预处理管道的一致性。这是一个示例工作流程:

1.使用自定义分词器构建词汇表,例如:

onmt-build-vocab --tokenizer_config config/tokenization/aggressive.yml --size 50000 --save_vocab data/enfr/en-vocab.txt data/enfr/en-train.txt

onmt-build-vocab --tokenizer_config config/tokenization/aggressive.yml --size 50000 --save_vocab data/enfr/fr-vocab.txt data/enfr/fr-train.txt

文本文件仅作为示例提供,不属于存储库。

  1. 在数据配置中引用tokenizer配置,例如:
data:
  source_tokenization: config/tokenization/aggressive.yml
  target_tokenization: config/tokenization/aggressive.yml

你可能感兴趣的:(opennmt-tf 关键术语说明)