diff --git a/asset/_static/d2v.png b/asset/_static/d2v.png new file mode 100644 index 00000000..71d6994e Binary files /dev/null and b/asset/_static/d2v.png differ diff --git a/asset/_static/d2v_bow_tfidf.png b/asset/_static/d2v_bow_tfidf.png new file mode 100644 index 00000000..c5215160 Binary files /dev/null and b/asset/_static/d2v_bow_tfidf.png differ diff --git a/asset/_static/d2v_general.png b/asset/_static/d2v_general.png new file mode 100644 index 00000000..524bd157 Binary files /dev/null and b/asset/_static/d2v_general.png differ diff --git a/asset/_static/d2v_stem_tf.png b/asset/_static/d2v_stem_tf.png new file mode 100644 index 00000000..4cb22522 Binary files /dev/null and b/asset/_static/d2v_stem_tf.png differ diff --git a/asset/_static/sif.png b/asset/_static/sif.png new file mode 100644 index 00000000..30c7cfef Binary files /dev/null and b/asset/_static/sif.png differ diff --git a/asset/_static/w2v_stem_text.png b/asset/_static/w2v_stem_text.png new file mode 100644 index 00000000..069f1468 Binary files /dev/null and b/asset/_static/w2v_stem_text.png differ diff --git a/asset/_static/w2v_stem_tf.png b/asset/_static/w2v_stem_tf.png new file mode 100644 index 00000000..1d628bb4 Binary files /dev/null and b/asset/_static/w2v_stem_tf.png differ diff --git a/docs/source/conf.py b/docs/source/conf.py index d0d6f9a2..9d6a118b 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -56,7 +56,7 @@ def copy_tree(src, tar): # npsphinx nbsphinx_thumbnails = { - 'build/blitz/sif/sif': '_static/item_figure.png', + 'build/blitz/sif/sif': '_static/sif.png', 'build/blitz/sif/sif_addition': '_static/sif_addition.png', 'build/blitz/utils/data': '_static/data.png', 'build/blitz/formula/formula': '_static/formula.png', @@ -64,8 +64,16 @@ def copy_tree(src, tar): 'build/blitz/parse/parse': '_static/parse.png', 'build/blitz/formula/formula': '_static/formula.png', 'build/blitz/tokenizer/tokenizer': '_static/tokenizer.png', - 'build/blitz/pretrain/prepare_dataset': '_static/prepare_dataset.jpg', 'build/blitz/vectorization/i2v': '_static/i2v.png', + 'build/blitz/pretrain/prepare_dataset': '_static/prepare_dataset.jpg', + 'build/blitz/pretrain/gensim/d2v_bow_tfidf': '_static/d2v_bow_tfidf.png', + 'build/blitz/pretrain/gensim/d2v_general': '_static/d2v_general.png', + 'build/blitz/pretrain/gensim/d2v_stem_tf': '_static/d2v_stem_tf.png', + 'build/blitz/pretrain/gensim/w2v_stem_text': '_static/w2v_stem_text.png', + 'build/blitz/pretrain/gensim/w2v_stem_tf': '_static/w2v_stem_tf.png', + 'build/blitz/pretrain/seg_token/d2v': '_static/d2v.png', + 'build/blitz/pretrain/seg_token/d2v_d1': '_static/d2v_d1.png', + 'build/blitz/pretrain/seg_token/d2v_d2': '_static/d2v_d2.png', } # Add any paths that contain templates here, relative to this directory. diff --git a/docs/source/tutorial/zh/index.rst b/docs/source/tutorial/zh/index.rst index 1b03d7d8..18ce7d4e 100644 --- a/docs/source/tutorial/zh/index.rst +++ b/docs/source/tutorial/zh/index.rst @@ -120,8 +120,8 @@ gensim模型d2v例子 :name: rst2-gallery :glob: - d2v_bow_tfidf <../../build/blitz/pretrain/gensim/d2v_bow_tfidf.ipynb> d2v_general <../../build/blitz/pretrain/gensim/d2v_general.ipynb> + d2v_bow_tfidf <../../build/blitz/pretrain/gensim/d2v_bow_tfidf.ipynb> d2v_stem_tf <../../build/blitz/pretrain/gensim/d2v_stem_tf.ipynb> @@ -146,5 +146,3 @@ seg_token例子 :glob: d2v.ipynb <../../build/blitz/pretrain/seg_token/d2v.ipynb> - d2v_d1 <../../build/blitz/pretrain/seg_token/d2v_d1.ipynb> - d2v_d2 <../../build/blitz/pretrain/seg_token/d2v_d2.ipynb> diff --git a/docs/source/tutorial/zh/parse.rst b/docs/source/tutorial/zh/parse.rst index e73f0075..9d6ea22e 100644 --- a/docs/source/tutorial/zh/parse.rst +++ b/docs/source/tutorial/zh/parse.rst @@ -28,6 +28,7 @@ -------------------- .. toctree:: + :maxdepth: 1 :titlesonly: 文本语法结构解析 diff --git a/docs/source/tutorial/zh/pretrain.rst b/docs/source/tutorial/zh/pretrain.rst index bcc737ce..477717a4 100644 --- a/docs/source/tutorial/zh/pretrain.rst +++ b/docs/source/tutorial/zh/pretrain.rst @@ -8,125 +8,13 @@ * 如何加载预训练模型 * 公开的预训练模型 - -训练模型 ---------- - -基本步骤 -################## - -1.确定模型的类型,选择适合的Tokenizer(GensimWordTokenizer、 GensimSegTokenizer),使之令牌化; - -2.调用train_vector函数,即可得到所需的预训练模型。 - -Examples: - -:: - - >>> tokenizer = GensimWordTokenizer(symbol="gmas", general=True) - >>> token_item = tokenizer("有公式$\\FormFigureID{wrong1?}$,如图$\\FigureID{088f15ea-xxx}$,\ - ... 若$x,y$满足约束条件公式$\\FormFigureBase64{wrong2?}$,$\\SIFSep$,则$z=x+7 y$的最大值为$\\SIFBlank$") - >>> print(token_item.tokens[:10]) - ['公式', '[FORMULA]', '如图', '[FIGURE]', 'x', ',', 'y', '约束条件', '公式', '[FORMULA]'] - - # 10 dimension with fasstext method - train_vector(sif_items, "../../../data/w2v/gensim_luna_stem_tf_", 10, method="d2v") - -装载模型 --------- - -将所得到的模型传入I2V模块即可装载模型 - -Examples: - -:: - - >>> model_path = "../test_model/test_gensim_luna_stem_tf_d2v_256.bin" - >>> i2v = D2V("text","d2v",filepath=model_path, pretrained_t2v = False) - - -公开模型一览 ------------- - -版本说明 -################## - -一级版本 - -* 公开版本1(luna_pub):高考 -* 公开版本2( luna_pub_large):高考 + 地区试题 - -二级版本: - -* 小科(Chinese,Math,English,History,Geography,Politics,Biology,Physics,Chemistry) -* 大科(理科science、文科literal、全科all) - -三级版本:【待完成】 - -* 不使用第三方初始化词表 -* 使用第三方初始化词表 - - - -模型命名规则:一级版本 + 二级版本 + gensim_luna_stem + 分词规则 + 模型方法 + 维度 - -Examples: - -:: - - 全量版本-全学科的D2V模型路径: - `/share/qlh/d2v_model/luna_pub/luna_pub_all_gensim_luna_stem_general_d2v_256.bin` - (备注:一个D2V模型含4个bin后缀的文件) - -模型训练数据说明 -################## - -* 当前【词向量w2v】【句向量d2v】模型所用的数据均为 【高中学段】 的题目 -* 测试数据:`[OpenLUNA.json] `_ - -当前提供以下模型,更多分学科、分题型模型正在训练中,敬请期待 - "d2v_all_256"(全科),"d2v_sci_256"(理科),"d2v_eng_256"(文科),"d2v_lit_256"(英语) - -模型训练案例 ------------- - -获得数据集 -#################### - -.. toctree:: - :maxdepth: 1 - :titlesonly: - - prepare_dataset <../../build/blitz/pretrain/prepare_dataset.ipynb> - -gensim模型d2v例子 -#################### - -.. toctree:: - :maxdepth: 1 - :titlesonly: - - d2v_bow_tfidf <../../build/blitz/pretrain/gensim/d2v_bow_tfidf.ipynb> - d2v_general <../../build/blitz/pretrain/gensim/d2v_general.ipynb> - d2v_stem_tf <../../build/blitz/pretrain/gensim/d2v_stem_tf.ipynb> - -gensim模型w2v例子 -#################### - -.. toctree:: - :maxdepth: 1 - :titlesonly: - - w2v_stem_text <../../build/blitz/pretrain/gensim/w2v_stem_text.ipynb> - w2v_stem_tf <../../build/blitz/pretrain/gensim/w2v_stem_tf.ipynb> - -seg_token例子 -#################### +学习路线图 +------------------ .. toctree:: :maxdepth: 1 :titlesonly: - d2v.ipynb <../../build/blitz/pretrain/seg_token/d2v.ipynb> - d2v_d1 <../../build/blitz/pretrain/seg_token/d2v_d1.ipynb> - d2v_d2 <../../build/blitz/pretrain/seg_token/d2v_d2.ipynb> + 训练模型 + 装载模型 + 公开模型一览 diff --git a/docs/source/tutorial/zh/pretrain/loading.rst b/docs/source/tutorial/zh/pretrain/loading.rst new file mode 100644 index 00000000..d930674b --- /dev/null +++ b/docs/source/tutorial/zh/pretrain/loading.rst @@ -0,0 +1,11 @@ +装载模型 +-------- + +将所得到的模型传入I2V模块即可装载模型 + +Examples: + +:: + + >>> model_path = "../test_model/test_gensim_luna_stem_tf_d2v_256.bin" + >>> i2v = D2V("text","d2v",filepath=model_path, pretrained_t2v = False) diff --git a/docs/source/tutorial/zh/pretrain/pub.rst b/docs/source/tutorial/zh/pretrain/pub.rst new file mode 100644 index 00000000..3139910f --- /dev/null +++ b/docs/source/tutorial/zh/pretrain/pub.rst @@ -0,0 +1,85 @@ +公开模型一览 +------------ + +版本说明 +################## + +一级版本 + +* 公开版本1(luna_pub):高考 +* 公开版本2( luna_pub_large):高考 + 地区试题 + +二级版本: + +* 小科(Chinese,Math,English,History,Geography,Politics,Biology,Physics,Chemistry) +* 大科(理科science、文科literal、全科all) + +三级版本:【待完成】 + +* 不使用第三方初始化词表 +* 使用第三方初始化词表 + + + +模型命名规则:一级版本 + 二级版本 + gensim_luna_stem + 分词规则 + 模型方法 + 维度 + +Examples: + +:: + + 全量版本-全学科的D2V模型路径: + `/share/qlh/d2v_model/luna_pub/luna_pub_all_gensim_luna_stem_general_d2v_256.bin` + (备注:一个D2V模型含4个bin后缀的文件) + +模型训练数据说明 +################## + +* 当前【词向量w2v】【句向量d2v】模型所用的数据均为 【高中学段】 的题目 +* 测试数据:`[OpenLUNA.json] `_ + +当前提供以下模型,更多分学科、分题型模型正在训练中,敬请期待 + "d2v_all_256"(全科),"d2v_sci_256"(理科),"d2v_eng_256"(文科),"d2v_lit_256"(英语) + +模型训练案例 +------------ + +获得数据集 +#################### + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + prepare_dataset <../../../build/blitz/pretrain/prepare_dataset.ipynb> + +gensim模型d2v例子 +#################### + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + d2v_bow_tfidf <../../../build/blitz/pretrain/gensim/d2v_bow_tfidf.ipynb> + d2v_general <../../../build/blitz/pretrain/gensim/d2v_general.ipynb> + d2v_stem_tf <../../../build/blitz/pretrain/gensim/d2v_stem_tf.ipynb> + +gensim模型w2v例子 +#################### + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + w2v_stem_text <../../../build/blitz/pretrain/gensim/w2v_stem_text.ipynb> + w2v_stem_tf <../../../build/blitz/pretrain/gensim/w2v_stem_tf.ipynb> + +seg_token例子 +#################### + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + d2v.ipynb <../../../build/blitz/pretrain/seg_token/d2v.ipynb> + d2v_d1 <../../../build/blitz/pretrain/seg_token/d2v_d1.ipynb> + d2v_d2 <../../../build/blitz/pretrain/seg_token/d2v_d2.ipynb> diff --git a/docs/source/tutorial/zh/pretrain/start.rst b/docs/source/tutorial/zh/pretrain/start.rst new file mode 100644 index 00000000..96db936c --- /dev/null +++ b/docs/source/tutorial/zh/pretrain/start.rst @@ -0,0 +1,22 @@ +训练模型 +--------- + +基本步骤 +################## + +1.确定模型的类型,选择适合的Tokenizer(GensimWordTokenizer、 GensimSegTokenizer),使之令牌化; + +2.调用train_vector函数,即可得到所需的预训练模型。 + +Examples: + +:: + + >>> tokenizer = GensimWordTokenizer(symbol="gmas", general=True) + >>> token_item = tokenizer("有公式$\\FormFigureID{wrong1?}$,如图$\\FigureID{088f15ea-xxx}$,\ + ... 若$x,y$满足约束条件公式$\\FormFigureBase64{wrong2?}$,$\\SIFSep$,则$z=x+7 y$的最大值为$\\SIFBlank$") + >>> print(token_item.tokens[:10]) + ['公式', '[FORMULA]', '如图', '[FIGURE]', 'x', ',', 'y', '约束条件', '公式', '[FORMULA]'] + + # 10 dimension with fasstext method + train_vector(sif_items, "../../../data/w2v/gensim_luna_stem_tf_", 10, method="d2v") diff --git a/docs/source/tutorial/zh/seg.rst b/docs/source/tutorial/zh/seg.rst index 8dc91196..9996dcee 100644 --- a/docs/source/tutorial/zh/seg.rst +++ b/docs/source/tutorial/zh/seg.rst @@ -18,6 +18,7 @@ -------------------- .. toctree:: + :maxdepth: 1 :titlesonly: 语义成分分解 diff --git a/docs/source/tutorial/zh/sif.rst b/docs/source/tutorial/zh/sif.rst index e80e31d5..0bb9f2ae 100644 --- a/docs/source/tutorial/zh/sif.rst +++ b/docs/source/tutorial/zh/sif.rst @@ -1 +1,109 @@ -.. mdinclude:: ../../../SIF4TI_CH.md +标准项目格式 +=============== + +version: 0.2 + +为了后续研究和使用的方便,我们需要一个统一的试题语法标准。 + +语法规则 +----------- + +1. 题目文本中只允许出现中文字符、中英文标点和换行符。 + +2. 使用 \$\SIFBlank\$ 替换横线,对于选择题中的括号使用 \$\SIFChoice\$ 替换。 + +3. 图片 ID 以公式的形式嵌入文本中:``$\FigureID{ uuid }$`` 或用 base64 编码表示,特别的,内容为公式的图片用 ``$\FormFigureID{ uuid }$`` 表示。 + +4. 文本标注格式:统一用 ``$\textf{item,CHAR_EN}$`` 表示,目前定义的有:b-加粗,i-斜体,u-下划线,w-下划波浪线,d-加点,t-标题。标注可以混用,按字母顺序排序,例如:$\textf{EduNLP, b}$ 表示 **EduNLP** + +5. 其余诸如,英文字母、罗马字符、数字等数学符号一律需要使用 latex 格式表示,即嵌在 ``$$`` 之中。 + +6. 分子式的录入标准暂且参考 `INCHI `_ + +7. 目前对 latex 内部语法没有要求。 + +:: + + 1. Item -> CHARACTER|EN_PUN_LIST|CH_PUN_LIST|FORMULA|QUES_MARK + 2. EN_PUN_LIST -> [',', '.', '?', '!', ':', ';', '\'', '\"', '(', ')', ' ','_','/','|','\\','<','>','[',']','-'] + 3. CH_PUN_LIST -> [',', '。', '!', '?', ':',';', '‘', '’', '“', '”', '(', ')', ' ', '、','《','》','—','.'] + 4. FORMULA -> $latex formula$ | $\FormFigureID{UUID}$ | $\FormFigureBase64{BASE64}$ + 5. FIGURE -> $\FigureID{UUID}$ | $\FigureBase64{BASE64}$ + 6. UUID -> [a-zA-Z\-0-9]+ + 7. CHARACTER -> CHAR_EN | CHAR_CH + 8. CHAR_EN -> [a-zA-Z]+ + 9. CHAR_CH -> [\u4e00-\u9fa5]+ + 10. DIGITAL -> [0-9]+ + 11. QUES_MARK -> $\SIFBlank$ | $\SIFChoice$ + + +注意事项 ++++++++++++++++ + +1. 保留字符与转义 + +2. 数字 + +3. 选空与填空 + +4. 对于单个的数字或字符也需要添加 ``$$`` (目前能实现自动校验) + +5. latex 公式中尽量不出现中文:(``\text{这里出现中文}``) + +6. MySql 数据库导入数据时会自动忽略一个 ``\``,所以录入的公式需要进一步处理为 ``\\`` + +示例 +----------------- + +标准形式: + +:: + + 1. 若$x,y$满足约束条件$\\left\\{\\begin{array}{c}2 x+y-2 \\leq 0 \\\\ x-y-1 \\geq 0 \\\\ y+1 \\geq 0\\end{array}\\right.$,则$z=x+7 y$的最大值$\\SIFUnderline$' + + 2. 已知函数$f(x)=|3 x+1|-2|x|$画出$y=f(x)$的图像求不等式$f(x)>f(x+1)$的解集$\\PictureID{3bf2ddf4-8af1-11eb-b750-b46bfc50aa29}$$\\PictureID{59b8bd14-8af1-11eb-93a5-b46bfc50aa29}$$\\PictureID{63118b3a-8b75-11eb-a5c0-b46bfc50aa29}$$\\PictureID{6a006179-8b76-11eb-b386-b46bfc50aa29}$$\\PictureID{088f15eb-8b7c-11eb-a86f-b46bfc50aa29}$ + +非标准形式: + +1. 字母、数字和数学符号连续混合出现: + + 例如: + + ``完成下面的2x2列联表,`` + + ``(单位:m3)`` + + ``则输出的n=`` + +2. 特殊的数学符号没有用 latex 公式表示: + + 例如: + + ``命题中真命题的序号是 ①`` + + ``AB是⊙O的直径,AC是⊙O的切线,BC交⊙O于点E.若D为AC的中点`` + +3. 出现以 unicode 编码写成的字符 + + 例如:``则$a$的取值范围是(\u3000\u3000)`` + + +Change Log +---------------- + +2021-05-18 + +修改: + +1. 原用 \$\SIFUnderline\$ 和 \$\SIFBracket\$ 来替换填空题中的横线和选择题中的括号,现分别用 \$\SIFBlank\$ 和 \$\SIFChoice\$ 替换。 + +2. 原统一用 ``$\PictureID{ uuid }$`` 表示图片,现使用 ``$\FigureID{ uuid }$`` ,其中对于数据公式,用 ``$\FormFigureID{ uuid }$`` 来表示。 + +2021-06-28 + +添加: + +1. 注明 ``$$`` 之中不能出现换行符。 + +2. 添加文本标注格式说明。 + diff --git a/docs/source/tutorial/zh/tokenize.rst b/docs/source/tutorial/zh/tokenize.rst index 83a9e8e4..ce719757 100644 --- a/docs/source/tutorial/zh/tokenize.rst +++ b/docs/source/tutorial/zh/tokenize.rst @@ -10,80 +10,19 @@ * 资源级别:令牌化 -分词 -------- +本模块提供题目文本的令牌化解析(Tokenization),将题目转换成令牌序列,方便后续向量化表征试题。 -词解析(text-tokenization):一个句子(不含公式)是由若干“词”按顺序构成的,将一个句子切分为若干词的过程称为“词解析”。根据词的粒度大小,又可细分为“词组解析”和"单字解析"。 - -:: - - - 词组解析 (word-tokenization):每一个词组为一个“令牌”(token)。 - - - 单字解析 (char-tokenization):单个字符即为一个“令牌”(token)。 - - -词解析分为两个主要步骤: - -1. 分词: - - - 词组解析:使用分词工具切分并提取题目文本中的词。本项目目前支持的分词工具有:`jieba` - - - 单字解析:按字符划分。 - -2. 筛选:过滤指定的停用词。 - - 本项目默认使用的停用词表:`[stopwords] `_ - 你也可以使用自己的停用词表,具体使用方法见下面的示例。 - -Examples: - -:: - - >>> text = "三角函数是基本初等函数之一" - >>> tokenize(text, granularity="word") - ['三角函数', '初等', '函数'] - - >>> tokenize(text, granularity="char") - ['三', '角', '函', '数', '基', '初', '函', '数'] - - -对切片后的item中的各个元素进行分词,提供深度选项,可以按照需求选择所有地方切分或者在部分标签处切分(比如\SIFSep、\SIFTag处);对标签添加的位置也可以进行选择,可以在头尾处添加或仅在头或尾处添加。 +在进入此模块前需要先后将item经过 `语法解析 `_ 和 `成分分解 `_ 处理,之后对切片后的item中的各个元素进行分词,提供深度选项,可以按照需求选择所有地方切分或者在部分标签处切分(比如\SIFSep、\SIFTag处);对标签添加的位置也可以进行选择,可以在头尾处添加或仅在头或尾处添加。 具有两种模式,一种是linear模式,用于对文本进行处理(使用jieba库进行分词);一种是ast模式,用于对公式进行解析。 -分句 -------- - -将较长的文档切分成若干句子的过程称为“分句”。每个句子为一个“令牌”(token)(待实现)。 - - -令牌化 -------- -即综合解析,将带公式的句子切分为若干标记的过程。每个标记为一个“令牌”(token)。 -我们提供了多种已经封装好的令牌化器供用户便捷调用,下面是一个示例: - - - Examples - ------------ - >>> items = ["已知集合$A=\\left\\{x \\mid x^{2}-3 x-4<0\\right\\}, \\quad B=\\{-4,1,3,5\\}, \\quad$ 则 $A \\cap B=$"] - >>> tokenizer = TextTokenizer() - >>> tokens = tokenizer(items) - >>> next(tokens) # doctest: +NORMALIZE_WHITESPACE - ['已知', '集合', 'A', '=', '\\left', '\\{', 'x', '\\mid', 'x', '^', '{', '2', '}', '-', '3', 'x', '-', '4', '<', - '0', '\\right', '\\}', ',', '\\quad', 'B', '=', '\\{', '-', '4', ',', '1', ',', '3', ',', '5', '\\}', ',', - '\\quad', 'A', '\\cap', 'B', '='] - - - - - -通过查看"./EduNLP/Tokenizer/tokenizer.py"及"./EduNLP/Pretrain/gensim_vec.py"可以查看更多令牌化器,下面是一个完整的令牌化器列表 +学习路线图 +-------------------- .. toctree:: - :maxdepth: 1 - :titlesonly: - - tokenization/TextTokenizer - tokenization/GensimSegTokenizer - tokenization/GensimWordTokenizer - + :maxdepth: 1 + :titlesonly: + + 分词 + 分句 + 令牌化 diff --git "a/docs/source/tutorial/zh/tokenize/\344\273\244\347\211\214\345\214\226.rst" "b/docs/source/tutorial/zh/tokenize/\344\273\244\347\211\214\345\214\226.rst" new file mode 100644 index 00000000..9782bece --- /dev/null +++ "b/docs/source/tutorial/zh/tokenize/\344\273\244\347\211\214\345\214\226.rst" @@ -0,0 +1,28 @@ +令牌化 +------- +即综合解析,将带公式的句子切分为若干标记的过程。每个标记为一个“令牌”(token)。 +我们提供了多种已经封装好的令牌化器供用户便捷调用,下面是一个示例: + +Examples + +:: + + >>> items = ["已知集合$A=\\left\\{x \\mid x^{2}-3 x-4<0\\right\\}, \\quad B=\\{-4,1,3,5\\}, \\quad$ 则 $A \\cap B=$"] + >>> tokenizer = TextTokenizer() + >>> tokens = tokenizer(items) + >>> next(tokens) # doctest: +NORMALIZE_WHITESPACE + ['已知', '集合', 'A', '=', '\\left', '\\{', 'x', '\\mid', 'x', '^', '{', '2', '}', '-', '3', 'x', '-', '4', '<', + '0', '\\right', '\\}', ',', '\\quad', 'B', '=', '\\{', '-', '4', ',', '1', ',', '3', ',', '5', '\\}', ',', + '\\quad', 'A', '\\cap', 'B', '='] + + + +通过查看"./EduNLP/Tokenizer/tokenizer.py"及"./EduNLP/Pretrain/gensim_vec.py"可以查看更多令牌化器,下面是一个完整的令牌化器列表 + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + ../tokenization/TextTokenizer + ../tokenization/GensimSegTokenizer + ../tokenization/GensimWordTokenizer diff --git "a/docs/source/tutorial/zh/tokenize/\345\210\206\345\217\245.rst" "b/docs/source/tutorial/zh/tokenize/\345\210\206\345\217\245.rst" new file mode 100644 index 00000000..67cf5679 --- /dev/null +++ "b/docs/source/tutorial/zh/tokenize/\345\210\206\345\217\245.rst" @@ -0,0 +1,4 @@ +分句 +------- + +将较长的文档切分成若干句子的过程称为“分句”。每个句子为一个“令牌”(token)(待实现)。 diff --git "a/docs/source/tutorial/zh/tokenize/\345\210\206\350\257\215.rst" "b/docs/source/tutorial/zh/tokenize/\345\210\206\350\257\215.rst" new file mode 100644 index 00000000..ec75b0cd --- /dev/null +++ "b/docs/source/tutorial/zh/tokenize/\345\210\206\350\257\215.rst" @@ -0,0 +1,36 @@ +分词 +------- + +词解析(text-tokenization):一个句子(不含公式)是由若干“词”按顺序构成的,将一个句子切分为若干词的过程称为“词解析”。根据词的粒度大小,又可细分为“词组解析”和"单字解析"。 + +:: + + - 词组解析 (word-tokenization):每一个词组为一个“令牌”(token)。 + + - 单字解析 (char-tokenization):单个字符即为一个“令牌”(token)。 + + +词解析分为两个主要步骤: + +1. 分词: + + - 词组解析:使用分词工具切分并提取题目文本中的词。本项目目前支持的分词工具有:`jieba` + + - 单字解析:按字符划分。 + +2. 筛选:过滤指定的停用词。 + + 本项目默认使用的停用词表:`[stopwords] `_ + 你也可以使用自己的停用词表,具体使用方法见下面的示例。 + +Examples: + +:: + + >>> text = "三角函数是基本初等函数之一" + >>> tokenize(text, granularity="word") + ['三角函数', '初等', '函数'] + + >>> tokenize(text, granularity="char") + ['三', '角', '函', '数', '基', '初', '函', '数'] + diff --git a/docs/source/tutorial/zh/vectorization.rst b/docs/source/tutorial/zh/vectorization.rst index 26d8fd16..c3161bad 100644 --- a/docs/source/tutorial/zh/vectorization.rst +++ b/docs/source/tutorial/zh/vectorization.rst @@ -3,94 +3,24 @@ 此部分提供了简便的接口,可以直接将传入的items经过转化得到向量。当前提供了是否使用预训练模型的选项,可根据需要进行选择,如不使用预训练模型则可直接调用D2V函数,使用预训练模型则调用get_pretrained_i2v函数。 - 总体流程 --------------------------- 1.对传入的item进行解析,得到SIF格式; - 2.对sif_item进行成分分解; - 3.对经过成分分解的item进行令牌化; - 4.使用已有或者使用提供的预训练模型,将令牌化后的item转换为向量。 +学习路线图 +--------------------------- -不使用预训练模型:直接调用D2V ------------------------------------- - -使用自己提供的任一预训练模型(给出模型存放路径即可)将给定的题目文本转成向量。 - - -* 优点:可以使用自己的模型,另可调整训练参数,灵活性强。 - - -处理的具体流程 - - -1.调用get_tokenizer函数,得到经过分词后的结果; - - -2.调用T2V模块,根据需要选择是否使用预训练的t2v模型 - -Examples: - -:: - - >>> model_path = "../test_model/test_gensim_luna_stem_tf_d2v_256.bin" - >>> i2v = D2V("text","d2v",filepath=model_path, pretrained_t2v = False) - >>> i2v(item) - -使用预训练模型:直接调用get_pretrained_i2v ---------------------------------------------- - -使用 EduNLP 项目组给定的预训练模型将给定的题目文本转成向量。 - - -* 优点:简单方便。 - - -* 缺点:只能使用项目中给定的模型,局限性较大。 - - -* 调用此函数即可获得相应的预训练模型,目前提供以下的预训练模型:d2v_all_256、d2v_sci_256、d2v_eng_256、d2v_lit_256 - -模型选择与使用 -################## - -根据题目所属学科选择预训练模型: - - - -+--------------------+------------------------+ -| 预训练模型名称 | 模型训练数据的所属学科 | -+====================+========================+ -| d2v_all_256 | 全学科 | -+--------------------+------------------------+ -| d2v_sci_256 | 理科 | -+--------------------+------------------------+ -| d2v_lit_256 | 文科 | -+--------------------+------------------------+ -| d2v_eng_256 | 英语 | -+--------------------+------------------------+ - - - - -处理的具体流程: - -1.下载相应的预处理模型 - - -2.将所得到的模型传入D2V,使用D2V进行处理 - -Examples: - -:: +.. toctree:: + :maxdepth: 1 + :titlesonly: - >>> i2v = get_pretrained_i2v("d2v_sci_256") - >>> i2v(item) + 不使用预训练模型 + 使用预训练模型 diff --git "a/docs/source/tutorial/zh/vectorization/\344\270\215\344\275\277\347\224\250\351\242\204\350\256\255\347\273\203\346\250\241\345\236\213.rst" "b/docs/source/tutorial/zh/vectorization/\344\270\215\344\275\277\347\224\250\351\242\204\350\256\255\347\273\203\346\250\241\345\236\213.rst" new file mode 100644 index 00000000..5a26588f --- /dev/null +++ "b/docs/source/tutorial/zh/vectorization/\344\270\215\344\275\277\347\224\250\351\242\204\350\256\255\347\273\203\346\250\241\345\236\213.rst" @@ -0,0 +1,22 @@ +不使用预训练模型:直接调用D2V +------------------------------------ + +使用自己提供的任一预训练模型(给出模型存放路径即可)将给定的题目文本转成向量。 + +* 优点:可以使用自己的模型,另可调整训练参数,灵活性强。 + + +处理的具体流程 +++++++++++++++++++++ + +1.调用get_tokenizer函数,得到经过分词后的结果; + +2.调用T2V模块,根据需要选择是否使用预训练的t2v模型 + +Examples: + +:: + + >>> model_path = "../test_model/test_gensim_luna_stem_tf_d2v_256.bin" + >>> i2v = D2V("text","d2v",filepath=model_path, pretrained_t2v = False) + >>> i2v(item) diff --git "a/docs/source/tutorial/zh/vectorization/\344\275\277\347\224\250\351\242\204\350\256\255\347\273\203\346\250\241\345\236\213.rst" "b/docs/source/tutorial/zh/vectorization/\344\275\277\347\224\250\351\242\204\350\256\255\347\273\203\346\250\241\345\236\213.rst" new file mode 100644 index 00000000..93d7a00b --- /dev/null +++ "b/docs/source/tutorial/zh/vectorization/\344\275\277\347\224\250\351\242\204\350\256\255\347\273\203\346\250\241\345\236\213.rst" @@ -0,0 +1,41 @@ +使用预训练模型:直接调用get_pretrained_i2v +--------------------------------------------- + +使用 EduNLP 项目组给定的预训练模型将给定的题目文本转成向量。 + +* 优点:简单方便。 + +* 缺点:只能使用项目中给定的模型,局限性较大。 + +* 调用此函数即可获得相应的预训练模型,目前提供以下的预训练模型:d2v_all_256、d2v_sci_256、d2v_eng_256、d2v_lit_256 + +模型选择与使用 +################## + +根据题目所属学科选择预训练模型: + ++--------------------+------------------------+ +| 预训练模型名称 | 模型训练数据的所属学科 | ++====================+========================+ +| d2v_all_256 | 全学科 | ++--------------------+------------------------+ +| d2v_sci_256 | 理科 | ++--------------------+------------------------+ +| d2v_lit_256 | 文科 | ++--------------------+------------------------+ +| d2v_eng_256 | 英语 | ++--------------------+------------------------+ + +处理的具体流程 +################## + +1.下载相应的预处理模型 + +2.将所得到的模型传入D2V,使用D2V进行处理 + +Examples: + +:: + + >>> i2v = get_pretrained_i2v("d2v_sci_256") + >>> i2v(item)