From c2b396347a3dcf887d8951e4c425e4cabfbc1207 Mon Sep 17 00:00:00 2001
From: lxr-tech <1838593642@qq.com>
Date: Fri, 13 May 2022 11:49:44 +0800
Subject: [PATCH] update tutorial-01 lxr 220513
---
tutorials/fastnlp_tutorial_0.ipynb | 42 +-
tutorials/fastnlp_tutorial_1.ipynb | 732 ++-------------------
tutorials/figures/T0-fig-parameter-matching.png | Bin 0 -> 95576 bytes
tutorials/figures/T0-fig-trainer-and-evaluator.png | Bin 100764 -> 71418 bytes
tutorials/figures/T0-fig-training-structure.png | Bin 0 -> 80282 bytes
5 files changed, 80 insertions(+), 694 deletions(-)
create mode 100644 tutorials/figures/T0-fig-parameter-matching.png
create mode 100644 tutorials/figures/T0-fig-training-structure.png
diff --git a/tutorials/fastnlp_tutorial_0.ipynb b/tutorials/fastnlp_tutorial_0.ipynb
index 26675ecf..4368652a 100644
--- a/tutorials/fastnlp_tutorial_0.ipynb
+++ b/tutorials/fastnlp_tutorial_0.ipynb
@@ -86,9 +86,11 @@
"\n",
" 具体`driver`与`Trainer`以及`Evaluator`之间的关系请参考`fastNLP 0.8`的框架设计\n",
"\n",
- "注:在同一脚本中,`Trainer`和`Evaluator`使用的`driver`应当保持一致\n",
+ "注:这里给出一条建议:**在同一脚本中**,**所有的`Trainer`和`Evaluator`使用的`driver`应当保持一致**\n",
"\n",
- " 一个不能违背的原则在于:**不要将多卡的`driver`前使用单卡的`driver`**(???),这样使用可能会带来很多意想不到的错误"
+ " 尽量不出现,之前使用单卡的`driver`,后面又使用多卡的`driver`,这是因为,当脚本执行至\n",
+ "\n",
+ " 多卡`driver`处时,会重启一个进程执行之前所有内容,如此一来可能会造成一些意想不到的麻烦"
]
},
{
@@ -167,7 +169,7 @@
"\n",
"注:在`fastNLP 0.8`中,**`Trainer`要求模型通过`train_step`来返回一个字典**,**满足如`{\"loss\": loss}`的形式**\n",
"\n",
- " 此外,这里也可以通过传入`Trainer`的参数`output_mapping`来实现高度化的定制,具体请见这一note(???)\n",
+ " 此外,这里也可以通过传入`Trainer`的参数`output_mapping`来实现输出的转换,详见(trainer的详细讲解,待补充)\n",
"\n",
"同样,在`fastNLP 0.8`中,**函数`evaluate_step`是`Evaluator`中参数`evaluate_fn`的默认值**\n",
"\n",
@@ -177,7 +179,7 @@
"\n",
" 从模块角度,该字典的键值和`metric`中的`update`函数的签名一致,这样的机制在传参时被称为“**参数匹配**”\n",
"\n",
- "
"
+ "
"
]
},
{
@@ -216,8 +218,14 @@
"\n",
" def __getitem__(self, item):\n",
" return {\"x\": self.x[item], \"y\": self.y[item]}\n",
- "```\n",
- "***\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f5f1a6aa",
+ "metadata": {},
+ "source": [
"对于后者,首先要明确,在`Trainer`和`Evaluator`中,`metrics`的计算分为`update`和`get_metric`两步\n",
"\n",
" **`update`函数**,**针对一个`batch`的预测结果**,计算其累计的评价指标\n",
@@ -230,7 +238,9 @@
"\n",
" 在此基础上,**`fastNLP 0.8`要求`evaluate_dataloader`生成的每个`batch`传递给对应的`metric`**\n",
"\n",
- " **以`{\"pred\": y_pred, \"target\": y_true}`的形式**,对应其`update`函数的函数签名"
+ " **以`{\"pred\": y_pred, \"target\": y_true}`的形式**,对应其`update`函数的函数签名\n",
+ "\n",
+ "
"
]
},
{
@@ -639,11 +649,11 @@
{
"data": {
"text/html": [
- "
{'acc#acc': 0.29}\n",
+ "{'acc#acc': 0.39}\n",
"
\n"
],
"text/plain": [
- "\u001b[1m{\u001b[0m\u001b[32m'acc#acc'\u001b[0m: \u001b[1;36m0.29\u001b[0m\u001b[1m}\u001b[0m\n"
+ "\u001b[1m{\u001b[0m\u001b[32m'acc#acc'\u001b[0m: \u001b[1;36m0.39\u001b[0m\u001b[1m}\u001b[0m\n"
]
},
"metadata": {},
@@ -652,7 +662,7 @@
{
"data": {
"text/plain": [
- "{'acc#acc': 0.29}"
+ "{'acc#acc': 0.39}"
]
},
"execution_count": 9,
@@ -710,7 +720,9 @@
"source": [
"通过使用`Trainer`类的`run`函数,进行训练\n",
"\n",
- " 还可以通过参数`num_eval_sanity_batch`决定每次训练前运行多少个`evaluate_batch`进行评测,默认为2"
+ " 还可以通过参数`num_eval_sanity_batch`决定每次训练前运行多少个`evaluate_batch`进行评测,默认为2\n",
+ "\n",
+ " 之所以“先评测后训练”,是为了保证训练很长时间的数据,不会在评测阶段出问题,故作此试探性评测"
]
},
{
@@ -773,6 +785,14 @@
"source": [
"trainer.run()"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c4e9c619",
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
diff --git a/tutorials/fastnlp_tutorial_1.ipynb b/tutorials/fastnlp_tutorial_1.ipynb
index 93e7a664..c378b54a 100644
--- a/tutorials/fastnlp_tutorial_1.ipynb
+++ b/tutorials/fastnlp_tutorial_1.ipynb
@@ -153,7 +153,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "2438703969992 2438374526920\n",
+ "1608199516936 1607874531400\n",
"+-----+------------------------+------------------------+-----+\n",
"| idx | sentence | words | num |\n",
"+-----+------------------------+------------------------+-----+\n",
@@ -183,7 +183,7 @@
"id": "aa277674",
"metadata": {},
"source": [
- " 注二:在`fastNLP 0.8`中,**对`dataset`使用等号**,**其效果是传引用**,**而不是赋值**(???)\n",
+ " 注二:**对对象使用等号一般表示传引用**,所以对`dataset`使用等号,是传引用而不是赋值\n",
"\n",
" 如下所示,**`dropped`和`dataset`具有相同`id`**,**对`dropped`执行删除操作`dataset`同时会被修改**"
]
@@ -198,7 +198,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "2438374526920 2438374526920\n",
+ "1607874531400 1607874531400\n",
"+-----+------------------------+------------------------+-----+\n",
"| idx | sentence | words | num |\n",
"+-----+------------------------+------------------------+-----+\n",
@@ -296,9 +296,9 @@
"\n",
"在`dataset`模块中,`apply`、`apply_field`、`apply_more`和`apply_field_more`函数可以进行简单的数据预处理\n",
"\n",
- " **`apply`和`apply_more`针对整条实例**,**`apply_field`和`apply_field_more`仅针对实例的部分字段**\n",
+ " **`apply`和`apply_more`输入整条实例**,**`apply_field`和`apply_field_more`仅输入实例的部分字段**\n",
"\n",
- " **`apply`和`apply_field`仅针对单个字段**,**`apply_more`和`apply_field_more`则可以针对多个字段**\n",
+ " **`apply`和`apply_field`仅输出单个字段**,**`apply_more`和`apply_field_more`则是输出多个字段**\n",
"\n",
" **`apply`和`apply_field`返回的是个列表**,**`apply_more`和`apply_field_more`返回的是个字典**\n",
"\n",
@@ -311,14 +311,14 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "72a0b5f9",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "",
+ "model_id": "8532c5609a394c19b60315663a6f0f4a",
"version_major": 2,
"version_minor": 0
},
@@ -328,42 +328,6 @@
},
"metadata": {},
"output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+-----+------------------------------+------------------------------+\n",
- "| idx | sentence | words |\n",
- "+-----+------------------------------+------------------------------+\n",
- "| 0 | This is an apple . | ['This', 'is', 'an', 'app... |\n",
- "| 1 | I like apples . | ['I', 'like', 'apples', '... |\n",
- "| 2 | Apples are good for our h... | ['Apples', 'are', 'good',... |\n",
- "+-----+------------------------------+------------------------------+\n"
- ]
}
],
"source": [
@@ -384,57 +348,10 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"id": "b1a8631f",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+-----+------------------------------+------------------------------+\n",
- "| idx | sentence | words |\n",
- "+-----+------------------------------+------------------------------+\n",
- "| 0 | This is an apple . | ['This', 'is', 'an', 'app... |\n",
- "| 1 | I like apples . | ['I', 'like', 'apples', '... |\n",
- "| 2 | Apples are good for our h... | ['Apples', 'are', 'good',... |\n",
- "+-----+------------------------------+------------------------------+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"dataset = DataSet(data)\n",
"\n",
@@ -459,57 +376,10 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "057c1d2c",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+-----+------------------------------+------------------------------+\n",
- "| idx | sentence | words |\n",
- "+-----+------------------------------+------------------------------+\n",
- "| 0 | This is an apple . | ['This', 'is', 'an', 'app... |\n",
- "| 1 | I like apples . | ['I', 'like', 'apples', '... |\n",
- "| 2 | Apples are good for our h... | ['Apples', 'are', 'good',... |\n",
- "+-----+------------------------------+------------------------------+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"dataset = DataSet(data)\n",
"dataset.apply_field(lambda sent:sent.split(), field_name='sentence', new_field_name='words')\n",
@@ -528,57 +398,10 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "51e2f02c",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+-----+------------------------+------------------------+-----+\n",
- "| idx | sentence | words | num |\n",
- "+-----+------------------------+------------------------+-----+\n",
- "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n",
- "| 1 | I like apples . | ['I', 'like', 'appl... | 4 |\n",
- "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n",
- "+-----+------------------------+------------------------+-----+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"dataset = DataSet(data)\n",
"dataset.apply_more(lambda ins:{'words': ins['sentence'].split(), 'num': len(ins['sentence'].split())})\n",
@@ -597,57 +420,10 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "db4295d5",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+-----+------------------------+------------------------+-----+\n",
- "| idx | sentence | words | num |\n",
- "+-----+------------------------+------------------------+-----+\n",
- "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n",
- "| 1 | I like apples . | ['I', 'like', 'appl... | 4 |\n",
- "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n",
- "+-----+------------------------+------------------------+-----+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"dataset = DataSet(data)\n",
"dataset.apply_field_more(lambda sent:{'words': sent.split(), 'num': len(sent.split())}, \n",
@@ -669,7 +445,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "012f537c",
"metadata": {},
"outputs": [],
@@ -700,20 +476,10 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "a4c1c10d",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "dict_items([('sentence', 'This is an apple .'), ('words', ['This', 'is', 'an', 'apple', '.']), ('num', 5)])\n",
- "dict_keys(['sentence', 'words', 'num'])\n",
- "dict_values(['This is an apple .', ['This', 'is', 'an', 'apple', '.'], 5])\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"ins = Instance(sentence=\"This is an apple .\", words=['This', 'is', 'an', 'apple', '.'], num=5)\n",
"\n",
@@ -732,22 +498,10 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"id": "55376402",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+--------------------+------------------------+-----+-----+\n",
- "| sentence | words | num | idx |\n",
- "+--------------------+------------------------+-----+-----+\n",
- "| This is an apple . | ['This', 'is', 'an'... | 5 | 0 |\n",
- "+--------------------+------------------------+-----+-----+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"ins.add_field(field_name='idx', field=0)\n",
"print(ins)"
@@ -767,44 +521,20 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": null,
"id": "fe15f4c1",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "{'sentence': ,\n",
- " 'words': ,\n",
- " 'num': }"
- ]
- },
- "execution_count": 15,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"dataset.get_all_fields()"
]
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"id": "5433815c",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "['num', 'sentence', 'words']"
- ]
- },
- "execution_count": 16,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"dataset.get_field_names()"
]
@@ -823,29 +553,10 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": null,
"id": "25ce5488",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "3 False\n",
- "6 True\n",
- "+------------------------------+------------------------------+--------+\n",
- "| sentence | words | length |\n",
- "+------------------------------+------------------------------+--------+\n",
- "| This is an apple . | ['This', 'is', 'an', 'app... | 5 |\n",
- "| I like apples . | ['I', 'like', 'apples', '... | 4 |\n",
- "| Apples are good for our h... | ['Apples', 'are', 'good',... | 7 |\n",
- "| This is an apple . | ['This', 'is', 'an', 'app... | 5 |\n",
- "| I like apples . | ['I', 'like', 'apples', '... | 4 |\n",
- "| Apples are good for our h... | ['Apples', 'are', 'good',... | 7 |\n",
- "+------------------------------+------------------------------+--------+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"print(len(dataset), dataset.has_field('length')) \n",
"if 'num' in dataset:\n",
@@ -877,21 +588,10 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": null,
"id": "3515e096",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Vocabulary([]...)\n",
- "{'': 0, '': 1}\n",
- " 0\n",
- " 1\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"from fastNLP.core.vocabulary import Vocabulary\n",
"\n",
@@ -914,20 +614,10 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": null,
"id": "88c7472a",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "5 Counter({'生活': 1, '就像': 1, '海洋': 1})\n",
- "6 Counter({'生活': 1, '就像': 1, '海洋': 1, '只有': 1})\n",
- "6 {'': 0, '': 1, '生活': 2, '就像': 3, '海洋': 4, '只有': 5}\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"vocab.add_word_lst(['生活', '就像', '海洋'])\n",
"print(len(vocab), vocab.word_count)\n",
@@ -950,21 +640,10 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": null,
"id": "3447acde",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " 0\n",
- " 1\n",
- "生活 2\n",
- "彼岸 1 False\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"print(vocab.to_word(0), vocab.to_index(''))\n",
"print(vocab.to_word(1), vocab.to_index(''))\n",
@@ -986,21 +665,10 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"id": "490b101c",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "生活 2\n",
- "彼岸 12 True\n",
- "13 Counter({'人': 4, '生活': 2, '就像': 2, '海洋': 2, '只有': 2, '意志': 1, '坚强的': 1, '才': 1, '能': 1, '到达': 1, '彼岸': 1})\n",
- "13 {'': 0, '': 1, '生活': 2, '就像': 3, '海洋': 4, '只有': 5, '人': 6, '意志': 7, '坚强的': 8, '才': 9, '能': 10, '到达': 11, '彼岸': 12}\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"vocab.add_word_lst(['生活', '就像', '海洋', '只有', '意志', '坚强的', '人', '人', '人', '人', '才', '能', '到达', '彼岸'])\n",
"print(vocab.to_word(2), vocab.to_index('生活'))\n",
@@ -1023,19 +691,10 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"id": "a99ff909",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{'positive': 0, 'negative': 1}\n",
- "ValueError: word `neutral` not in vocabulary\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"vocab = Vocabulary(unknown=None, padding=None)\n",
"\n",
@@ -1058,19 +717,10 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"id": "432f74c1",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{'': 0, 'positive': 1, 'negative': 2}\n",
- "0 \n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"vocab = Vocabulary(unknown='', padding=None)\n",
"\n",
@@ -1096,92 +746,10 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"id": "3dbd985d",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " SentenceId | \n",
- " Sentence | \n",
- " Sentiment | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1 | \n",
- " A series of escapades demonstrating the adage ... | \n",
- " negative | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 2 | \n",
- " This quiet , introspective and entertaining in... | \n",
- " positive | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 3 | \n",
- " Even fans of Ismail Merchant 's work , I suspe... | \n",
- " negative | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 4 | \n",
- " A positively thrilling combination of ethnogra... | \n",
- " neutral | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 5 | \n",
- " A comedy-drama of nearly epic proportions root... | \n",
- " positive | \n",
- "
\n",
- " \n",
- " 5 | \n",
- " 6 | \n",
- " The Importance of Being Earnest , so thick wit... | \n",
- " neutral | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " SentenceId Sentence Sentiment\n",
- "0 1 A series of escapades demonstrating the adage ... negative\n",
- "1 2 This quiet , introspective and entertaining in... positive\n",
- "2 3 Even fans of Ismail Merchant 's work , I suspe... negative\n",
- "3 4 A positively thrilling combination of ethnogra... neutral\n",
- "4 5 A comedy-drama of nearly epic proportions root... positive\n",
- "5 6 The Importance of Being Earnest , so thick wit... neutral"
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"import pandas as pd\n",
"\n",
@@ -1199,60 +767,10 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": null,
"id": "4f634586",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+------------+------------------------------+-----------+\n",
- "| SentenceId | Sentence | Sentiment |\n",
- "+------------+------------------------------+-----------+\n",
- "| 1 | ['a', 'series', 'of', 'es... | negative |\n",
- "| 2 | ['this', 'quiet', ',', 'i... | positive |\n",
- "| 3 | ['even', 'fans', 'of', 'i... | negative |\n",
- "| 4 | ['a', 'positively', 'thri... | neutral |\n",
- "| 5 | ['a', 'comedy-drama', 'of... | positive |\n",
- "| 6 | ['the', 'importance', 'of... | neutral |\n",
- "+------------+------------------------------+-----------+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"from fastNLP.core.dataset import DataSet\n",
"\n",
@@ -1273,7 +791,7 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"id": "46722efc",
"metadata": {},
"outputs": [],
@@ -1297,55 +815,10 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": null,
"id": "a2de615b",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Counter({'a': 9, 'of': 9, ',': 7, 'the': 6, '.': 5, 'is': 3, 'and': 3, 'good': 2, 'for': 2, 'which': 2, 'this': 2, \"'s\": 2, 'series': 1, 'escapades': 1, 'demonstrating': 1, 'adage': 1, 'that': 1, 'what': 1, 'goose': 1, 'also': 1, 'gander': 1, 'some': 1, 'occasionally': 1, 'amuses': 1, 'but': 1, 'none': 1, 'amounts': 1, 'to': 1, 'much': 1, 'story': 1, 'quiet': 1, 'introspective': 1, 'entertaining': 1, 'independent': 1, 'worth': 1, 'seeking': 1, 'even': 1, 'fans': 1, 'ismail': 1, 'merchant': 1, 'work': 1, 'i': 1, 'suspect': 1, 'would': 1, 'have': 1, 'hard': 1, 'time': 1, 'sitting': 1, 'through': 1, 'one': 1, 'positively': 1, 'thrilling': 1, 'combination': 1, 'ethnography': 1, 'all': 1, 'intrigue': 1, 'betrayal': 1, 'deceit': 1, 'murder': 1, 'shakespearean': 1, 'tragedy': 1, 'or': 1, 'juicy': 1, 'soap': 1, 'opera': 1, 'comedy-drama': 1, 'nearly': 1, 'epic': 1, 'proportions': 1, 'rooted': 1, 'in': 1, 'sincere': 1, 'performance': 1, 'by': 1, 'title': 1, 'character': 1, 'undergoing': 1, 'midlife': 1, 'crisis': 1, 'importance': 1, 'being': 1, 'earnest': 1, 'so': 1, 'thick': 1, 'with': 1, 'wit': 1, 'it': 1, 'plays': 1, 'like': 1, 'reading': 1, 'from': 1, 'bartlett': 1, 'familiar': 1, 'quotations': 1}) \n",
- "\n",
- "{'': 0, '': 1, 'a': 2, 'of': 3, ',': 4, 'the': 5, '.': 6, 'is': 7, 'and': 8, 'good': 9, 'for': 10, 'which': 11, 'this': 12, \"'s\": 13, 'series': 14, 'escapades': 15, 'demonstrating': 16, 'adage': 17, 'that': 18, 'what': 19, 'goose': 20, 'also': 21, 'gander': 22, 'some': 23, 'occasionally': 24, 'amuses': 25, 'but': 26, 'none': 27, 'amounts': 28, 'to': 29, 'much': 30, 'story': 31, 'quiet': 32, 'introspective': 33, 'entertaining': 34, 'independent': 35, 'worth': 36, 'seeking': 37, 'even': 38, 'fans': 39, 'ismail': 40, 'merchant': 41, 'work': 42, 'i': 43, 'suspect': 44, 'would': 45, 'have': 46, 'hard': 47, 'time': 48, 'sitting': 49, 'through': 50, 'one': 51, 'positively': 52, 'thrilling': 53, 'combination': 54, 'ethnography': 55, 'all': 56, 'intrigue': 57, 'betrayal': 58, 'deceit': 59, 'murder': 60, 'shakespearean': 61, 'tragedy': 62, 'or': 63, 'juicy': 64, 'soap': 65, 'opera': 66, 'comedy-drama': 67, 'nearly': 68, 'epic': 69, 'proportions': 70, 'rooted': 71, 'in': 72, 'sincere': 73, 'performance': 74, 'by': 75, 'title': 76, 'character': 77, 'undergoing': 78, 'midlife': 79, 'crisis': 80, 'importance': 81, 'being': 82, 'earnest': 83, 'so': 84, 'thick': 85, 'with': 86, 'wit': 87, 'it': 88, 'plays': 89, 'like': 90, 'reading': 91, 'from': 92, 'bartlett': 93, 'familiar': 94, 'quotations': 95} \n",
- "\n",
- "Vocabulary(['a', 'series', 'of', 'escapades', 'demonstrating']...)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"from fastNLP.core.vocabulary import Vocabulary\n",
"\n",
@@ -1368,60 +841,10 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": null,
"id": "2f9a04b2",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+------------+------------------------------+-----------+\n",
- "| SentenceId | Sentence | Sentiment |\n",
- "+------------+------------------------------+-----------+\n",
- "| 1 | [2, 14, 3, 15, 16, 5, 17,... | negative |\n",
- "| 2 | [12, 32, 4, 33, 8, 34, 35... | positive |\n",
- "| 3 | [38, 39, 3, 40, 41, 13, 4... | negative |\n",
- "| 4 | [2, 52, 53, 54, 3, 55, 8,... | neutral |\n",
- "| 5 | [2, 67, 3, 68, 69, 70, 71... | positive |\n",
- "| 6 | [5, 81, 3, 82, 83, 4, 84,... | neutral |\n",
- "+------------+------------------------------+-----------+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"vocab.index_dataset(dataset, field_name='Sentence')\n",
"print(dataset)"
@@ -1437,67 +860,10 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"id": "5f5eed18",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{'negative': 0, 'positive': 1, 'neutral': 2}\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "
\n"
- ],
- "text/plain": [
- "\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "+------------+------------------------------+-----------+\n",
- "| SentenceId | Sentence | Sentiment |\n",
- "+------------+------------------------------+-----------+\n",
- "| 1 | [2, 14, 3, 15, 16, 5, 17,... | 0 |\n",
- "| 2 | [12, 32, 4, 33, 8, 34, 35... | 1 |\n",
- "| 3 | [38, 39, 3, 40, 41, 13, 4... | 0 |\n",
- "| 4 | [2, 52, 53, 54, 3, 55, 8,... | 2 |\n",
- "| 5 | [2, 67, 3, 68, 69, 70, 71... | 1 |\n",
- "| 6 | [5, 81, 3, 82, 83, 4, 84,... | 2 |\n",
- "+------------+------------------------------+-----------+\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"target_vocab = Vocabulary(padding=None, unknown=None)\n",
"\n",
diff --git a/tutorials/figures/T0-fig-parameter-matching.png b/tutorials/figures/T0-fig-parameter-matching.png
new file mode 100644
index 0000000000000000000000000000000000000000..410256ae444e97ef0a800f63edc8a041daa7a10e
GIT binary patch
literal 95576
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