diff --git a/README.md b/README.md index a7661e356beb3c7820454c7655f998b947a23192..2c5eb80af8c616cc5615bc6e12454de71b5ae9a9 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ A comprehensive Vietnamese Named Entity Recognition system using state-of-the-ar Try the interactive demo: **[Vietnamese NER Demo](https://huggingface.co/spaces/DucLai/Vietnamese_NER)** - + ## 🔄 Project Workflow diff --git a/requirements.txt b/requirements.txt index e80f418ad6e7682b5ec2e31452f0cef5ff92bd9b..9039316ac83b79f7d56769c1d07c308e71906287 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/space/README.md b/space/README.md index a7661e356beb3c7820454c7655f998b947a23192..2c5eb80af8c616cc5615bc6e12454de71b5ae9a9 100644 --- a/space/README.md +++ b/space/README.md @@ -17,7 +17,7 @@ A comprehensive Vietnamese Named Entity Recognition system using state-of-the-ar Try the interactive demo: **[Vietnamese NER Demo](https://huggingface.co/spaces/DucLai/Vietnamese_NER)** - + ## 🔄 Project Workflow diff --git a/space/space/space/README.md b/space/space/space/README.md index 2c5eb80af8c616cc5615bc6e12454de71b5ae9a9..a7661e356beb3c7820454c7655f998b947a23192 100644 --- a/space/space/space/README.md +++ b/space/space/space/README.md @@ -17,7 +17,7 @@ A comprehensive Vietnamese Named Entity Recognition system using state-of-the-ar Try the interactive demo: **[Vietnamese NER Demo](https://huggingface.co/spaces/DucLai/Vietnamese_NER)** - + ## 🔄 Project Workflow diff --git a/space/space/space/space/space/requirements.txt b/space/space/space/space/space/requirements.txt index 9039316ac83b79f7d56769c1d07c308e71906287..e80f418ad6e7682b5ec2e31452f0cef5ff92bd9b 100644 Binary files a/space/space/space/space/space/requirements.txt and b/space/space/space/space/space/requirements.txt differ diff --git a/space/space/space/space/space/space/README.md b/space/space/space/space/space/space/README.md index a7661e356beb3c7820454c7655f998b947a23192..2c5eb80af8c616cc5615bc6e12454de71b5ae9a9 100644 --- a/space/space/space/space/space/space/README.md +++ b/space/space/space/space/space/space/README.md @@ -17,7 +17,7 @@ A comprehensive Vietnamese Named Entity Recognition system using state-of-the-ar Try the interactive demo: **[Vietnamese NER Demo](https://huggingface.co/spaces/DucLai/Vietnamese_NER)** - + ## 🔄 Project Workflow diff --git a/space/space/space/space/space/space/space/space/space/space/README.md b/space/space/space/space/space/space/space/space/space/space/README.md index ca121044777ca34994a9cc1568ddc703dfb631bb..a7661e356beb3c7820454c7655f998b947a23192 100644 --- a/space/space/space/space/space/space/space/space/space/space/README.md +++ b/space/space/space/space/space/space/space/space/space/space/README.md @@ -8,80 +8,184 @@ sdk_version: 1.46.1 app_file: src/app.py pinned: false --- -# Vietnamese Named Entity Recognition +# Vietnamese Named Entity Recognition (NER) 🧠 -## 🛠️ Set Up Your Environment With Conda +A comprehensive Vietnamese Named Entity Recognition system using state-of-the-art deep learning models including PhoBERT, CRF, and ensemble methods. -### Option 1: Using `requirements.txt` +## 🚀 Live Demo + +Try the interactive demo: **[Vietnamese NER Demo](https://huggingface.co/spaces/DucLai/Vietnamese_NER)** + + + +## 🔄 Project Workflow + + + +## 🎯 Overview + +This project implements a robust Vietnamese Named Entity Recognition system that can identify and classify entities in Vietnamese text. The system combines multiple approaches including: + +- **PhoBERT-based embeddings** for contextual understanding +- **Conditional Random Fields (CRF)** for sequence labeling +- **Random Forest** with semantic embeddings +- **Rule-based methods** for enhanced accuracy + +## 📂 Project Structure + +``` +VIETNAMESE_NER/ +│ +├── .github/workflows +│ └── main.yml # Auto deploy to Hugging Space +│ +├── data/ # Dataset files +│ └── raw_data.csv # Raw training data +│ +├── notebooks/ # Jupyter notebooks for experimentation +│ ├── Duc_Notebook.ipynb # CRF + RandomForest experiments +│ ├── Softmax_PhoBERT.ipynb # Softmax approach +│ ├── Kien_Rule_base.ipynb # Rule-based method with RF +│ └── Kien_RF_lightgbm.ipynb # RF with semantic embeddings +│ +├── src/ # Main source code +│ ├── __init__.py +│ ├── app.py # Streamlit web application +│ ├── front.py # Highlight function +│ ├── config.py # Project configuration +│ ├── data_loader.py # Data loading utilities +│ ├── preprocessing.py # Data preprocessing functions +│ ├── model.py # Model architecture definitions +│ ├── train.py # Training pipeline +│ ├── evaluate.py # Model evaluation +│ └── predict.py # Inference utilities +│ +├── models/ # Saved model artifacts +│ └── best_model.pt # Best trained model weights +│ +├── outputs/ # Training outputs +│ ├── output.log # Training logs (TensorBoard) +│ └── figures/ # Visualization plots +│ +├── tests/ # Unit tests (planned) +│ +├── requirements.txt # Python dependencies +├── environment.yml # Conda environment file +├── README.md # Project documentation +└── run.py # Main training script +``` + + +## 🏗️ Model Architecture + +The system uses a hybrid architecture combining the strengths of different approaches: + + + +### Core Components: +- **PhoBERT-Base**: Generates contextual embeddings for Vietnamese text +- **Linear + CRF Layer**: Handles sequence labeling with context awareness +- **Softmax/Random Forest**: Provides single-label prediction capabilities + +## 📊 Dataset & Performance + +### Dataset: VLSP2016 +The model is trained on the VLSP2016 dataset extracted from Vietnamese news articles. + +#### Dataset Statistics: +
+ |
+
+ |
+
\n", + " | tokens | \n", + "id | \n", + "seg_text | \n", + "raw_text | \n", + "labels | \n", + "
---|---|---|---|---|---|
0 | \n", + "[Không_khí, thật, náo_nhiệt, .] | \n", + "[0, 0, 0, 0] | \n", + "Không_khí thật náo_nhiệt . | \n", + "Không khí thật náo nhiệt . | \n", + "[O, O, O, O] | \n", + "
1 | \n", + "[Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... | \n", + "[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "[O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... | \n", + "
2 | \n", + "[Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... | \n", + "[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Suy_tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "Suy tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "[O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... | \n", + "
3 | \n", + "[Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu_nướng gì ,... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu nướng gì ,... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... | \n", + "
4 | \n", + "[Nhật_ký, của, thuyền_viên, .] | \n", + "[0, 0, 0, 0] | \n", + "Nhật_ký của thuyền_viên . | \n", + "Nhật ký của thuyền viên . | \n", + "[O, O, O, O] | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
16853 | \n", + "[Nghe, thấy, đã, ghê_ghê, nhưng, Nhiêu, chưa, ... | \n", + "[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, ... | \n", + "Nghe thấy đã ghê_ghê nhưng Nhiêu chưa được tườ... | \n", + "Nghe thấy đã ghê ghê nhưng Nhiêu chưa được tườ... | \n", + "[O, O, O, O, O, B-PER, O, O, O, O, O, O, O, O,... | \n", + "
16854 | \n", + "[Nhưng, mọi, chuyện, không, dừng, ở, đó, .] | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "[O, O, O, O, O, O, O, O] | \n", + "
16855 | \n", + "[Hoà, bảo, thời_gian, đầu, mặc_cảm, lắm, ,, ở,... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Hoà bảo thời_gian đầu mặc_cảm lắm , ở trong nh... | \n", + "Hoà bảo thời gian đầu mặc cảm lắm , ở trong nh... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
16856 | \n", + "[Biết_bao, người, đã, tình_nguyện, hiến_dâng, ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "Biết_bao người đã tình_nguyện hiến_dâng cả cuộ... | \n", + "Biết bao người đã tình nguyện hiến dâng cả cuộ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
16857 | \n", + "[Trên, đây, mới, là, “, thành_tích, ”, tiêu, t... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Trên đây mới là “ thành_tích ” tiêu tiền của m... | \n", + "Trên đây mới là “ thành tích ” tiêu tiền của m... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
16858 rows × 5 columns
\n", + "/content/wandb/run-20250605_133906-tjmjkx7n
"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "epoch | ▁▁▂▂▂▃▃▄▄▄▅▅▅▆▆▇▇▇██ |
test_acc | ▁▅▆▆▇▇███▇████▇▇█▇█▇ |
test_f1 | ▁▅▆▇▆▇███▇████▇▇█▇█▇ |
test_precision | ▁▄▅▄▆▇▆▆▇▆▆█▇▆▆▅██▇█ |
test_recall | ▁▄▆▇▆▇██▇▇█▇▇█▇▇▇▇▇▇ |
train_acc | ▁▄▅▅▆▆▇▇▇▇▇▇████████ |
train_f1 | ▁▄▅▆▆▆▇▇▇▇▇▇████████ |
train_loss | █▃▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁ |
train_precision | ▁▃▄▃▅▅▅▅▆▆▅▇▇▇▇▇▇█▇█ |
train_recall | ▁▄▅▆▆▆▇▇▇▇█▇█████▇██ |
epoch | 20 |
test_acc | 0.99285 |
test_f1 | 0.90442 |
test_precision | 0.9205 |
test_recall | 0.88994 |
train_acc | 0.99693 |
train_f1 | 0.96475 |
train_loss | 0.16259 |
train_precision | 0.97877 |
train_recall | 0.95181 |
./wandb/run-20250605_133906-tjmjkx7n/logs
"
+ ]
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Generate final classification report\n",
+ "model.eval()\n",
+ "all_preds, all_true = [], []\n",
+ "\n",
+ "with torch.no_grad():\n",
+ " for x, y, lengths in tqdm(test_loader, desc=\"Generating classification report\"):\n",
+ " mask = (y != -1)\n",
+ " preds = model.decode(x, mask)\n",
+ " for pred_seq, true_seq, m in zip(preds, y, mask):\n",
+ " ts = true_seq[m].tolist()\n",
+ " all_preds.extend(pred_seq)\n",
+ " all_true.extend(ts)\n",
+ "\n",
+ "# Generate and print classification report\n",
+ "report = classification_report(all_true, all_preds, digits=4)\n",
+ "print(\"Classification Report:\\n\", report)\n"
+ ],
+ "metadata": {
+ "id": "CBwl-uTjaA1y",
+ "outputId": "7597a9ab-bd18-4530-e6d6-e335a974f01a",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "Generating classification report: 100%|██████████| 211/211 [00:02<00:00, 101.37it/s]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Classification Report:\n",
+ " precision recall f1-score support\n",
+ "\n",
+ " 0 0.9968 0.9983 0.9976 68476\n",
+ " 1 0.9903 0.9754 0.9828 1464\n",
+ " 2 0.9941 0.9781 0.9860 686\n",
+ " 3 0.8384 0.7471 0.7901 257\n",
+ " 4 0.8560 0.7605 0.8054 430\n",
+ " 5 0.9066 0.9073 0.9070 1241\n",
+ " 6 0.8613 0.8628 0.8620 554\n",
+ "\n",
+ " accuracy 0.9928 73108\n",
+ " macro avg 0.9205 0.8899 0.9044 73108\n",
+ "weighted avg 0.9927 0.9928 0.9927 73108\n",
+ "\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive')"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "L1bDKxlyZRAy",
+ "outputId": "cf258765-6629-4d34-bf0c-431ba6575950"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Mounted at /content/drive\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import shutil\n",
+ "shutil.copy('/content/checkpoints/best_epoch_13.pt', '/content/drive/My Drive')"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ },
+ "id": "q4qCaBbrZcTZ",
+ "outputId": "57eff61e-f5ca-4597-e499-ea8b71d603a9"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "'/content/drive/My Drive/best_epoch_13.pt'"
+ ],
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "type": "string"
+ }
+ },
+ "metadata": {},
+ "execution_count": 13
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Train/Valid/Test"
+ ],
+ "metadata": {
+ "id": "T0LAYLnU8ONv"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "from torch.utils.data import Dataset, DataLoader\n",
+ "from torchcrf import CRF\n",
+ "from torch.nn.utils.rnn import pad_sequence\n",
+ "from sklearn.metrics import precision_recall_fscore_support, classification_report, accuracy_score\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from tqdm import tqdm\n",
+ "import wandb\n",
+ "import os\n",
+ "\n",
+ "# Initialize Weights & Biases\n",
+ "wandb.init(\n",
+ " project=\"NER\",\n",
+ " name=\"CRF_VLSP2016\",\n",
+ " config={\n",
+ " \"epochs\": 20,\n",
+ " \"batch_size\": 16,\n",
+ " \"learning_rate\": 1e-3,\n",
+ " # train/val/test ratios\n",
+ " \"train_ratio\": 0.70,\n",
+ " \"val_ratio\": 0.15,\n",
+ " \"test_ratio\": 0.15\n",
+ " }\n",
+ ")\n",
+ "config = wandb.config\n",
+ "\n",
+ "# Create splits: first separate out test, then train/val\n",
+ "emb_train_val, emb_test, lbl_train_val, lbl_test = train_test_split(\n",
+ " all_embeddings, all_labels,\n",
+ " test_size=config.test_ratio,\n",
+ " random_state=42\n",
+ ")\n",
+ "# Compute validation size relative to remaining (val_ratio / (train_ratio + val_ratio))\n",
+ "val_relative = config.val_ratio / (config.train_ratio + config.val_ratio)\n",
+ "emb_train, emb_val, lbl_train, lbl_val = train_test_split(\n",
+ " emb_train_val, lbl_train_val,\n",
+ " test_size=val_relative,\n",
+ " random_state=42\n",
+ ")\n",
+ "\n",
+ "class NERDataset(Dataset):\n",
+ " def __init__(self, embeddings, labels):\n",
+ " self.embeddings = embeddings\n",
+ " self.labels = labels\n",
+ "\n",
+ " def __len__(self):\n",
+ " return len(self.embeddings)\n",
+ "\n",
+ " def __getitem__(self, idx):\n",
+ " return self.embeddings[idx], self.labels[idx]\n",
+ "\n",
+ "\n",
+ "def collate_fn(batch):\n",
+ " embeddings, labels = zip(*batch)\n",
+ " lengths = [e.size(0) for e in embeddings]\n",
+ " max_len = max(lengths)\n",
+ "\n",
+ " padded_embs = torch.stack([\n",
+ " torch.cat([e, torch.zeros(max_len - e.size(0), e.size(1))]) for e in embeddings\n",
+ " ])\n",
+ " padded_labels = torch.stack([\n",
+ " torch.cat([l, torch.full((max_len - l.size(0),), -1, dtype=torch.long)]) for l in labels\n",
+ " ])\n",
+ " return padded_embs, padded_labels, lengths\n",
+ "\n",
+ "# Create DataLoaders\n",
+ "datasets = {\n",
+ " 'train': NERDataset(emb_train, lbl_train),\n",
+ " 'val': NERDataset(emb_val, lbl_val),\n",
+ " 'test': NERDataset(emb_test, lbl_test)\n",
+ "}\n",
+ "loaders = {\n",
+ " split: DataLoader(ds, batch_size=config.batch_size,\n",
+ " shuffle=(split=='train'), collate_fn=collate_fn)\n",
+ " for split, ds in datasets.items()\n",
+ "}\n",
+ "\n",
+ "# Model setup\n",
+ "num_tags = max(label.max().item() for label in all_labels) + 1\n",
+ "class CRFTagger(nn.Module):\n",
+ " def __init__(self, input_dim, num_tags):\n",
+ " super().__init__()\n",
+ " self.hidden2tag = nn.Linear(input_dim, num_tags)\n",
+ " self.crf = CRF(num_tags, batch_first=True)\n",
+ "\n",
+ " def forward(self, x, labels, mask):\n",
+ " emissions = self.hidden2tag(x)\n",
+ " return -self.crf(emissions, labels, mask=mask, reduction='mean')\n",
+ "\n",
+ " def decode(self, x, mask):\n",
+ " emissions = self.hidden2tag(x)\n",
+ " return self.crf.decode(emissions, mask)\n",
+ "\n",
+ "model = CRFTagger(input_dim=emb_train[0].size(1), num_tags=num_tags)\n",
+ "optimizer = torch.optim.Adam(model.parameters(), lr=config.learning_rate)\n",
+ "\n",
+ "# Watch model parameters and gradients\n",
+ "wandb.watch(model, log=\"all\")\n",
+ "\n",
+ "# Create checkpoint directory\n",
+ "os.makedirs(\"checkpoints\", exist_ok=True)\n",
+ "best_val_f1 = 0.0\n",
+ "\n",
+ "# Evaluation helper\n",
+ "def evaluate(model, loader):\n",
+ " model.eval()\n",
+ " all_preds, all_true = [], []\n",
+ " with torch.no_grad():\n",
+ " for x, y, _ in loader:\n",
+ " mask = (y != -1)\n",
+ " preds = model.decode(x, mask)\n",
+ " for pred_seq, true_seq, m in zip(preds, y, mask):\n",
+ " true_labels = true_seq[m].tolist()\n",
+ " all_preds.extend(pred_seq)\n",
+ " all_true.extend(true_labels)\n",
+ " precision, recall, f1, _ = precision_recall_fscore_support(all_true, all_preds, average='macro', zero_division=0)\n",
+ " acc = accuracy_score(all_true, all_preds)\n",
+ " return precision, recall, f1, acc\n",
+ "\n",
+ "# Training loop\n",
+ "for epoch in range(1, config.epochs + 1):\n",
+ " model.train()\n",
+ " total_loss = 0.0\n",
+ " train_bar = tqdm(loaders['train'], desc=f\"Train Epoch {epoch}/{config.epochs}\")\n",
+ " for batch_idx, (x, y, _) in enumerate(train_bar, start=1):\n",
+ " mask = (y != -1)\n",
+ " loss = model(x, y, mask)\n",
+ " optimizer.zero_grad()\n",
+ " loss.backward()\n",
+ " optimizer.step()\n",
+ "\n",
+ " total_loss += loss.item()\n",
+ " train_bar.set_postfix(batch_loss=loss.item(), avg_loss=total_loss / batch_idx)\n",
+ "\n",
+ " avg_train_loss = total_loss / len(loaders['train'])\n",
+ " train_precision, train_recall, train_f1, train_acc = evaluate(model, loaders['train'])\n",
+ " val_precision, val_recall, val_f1, val_acc = evaluate(model, loaders['val'])\n",
+ "\n",
+ " # Print & log metrics for train and val\n",
+ " print(f\"Epoch {epoch}: train_loss={avg_train_loss:.4f}, train_f1={train_f1:.4f}, val_f1={val_f1:.4f}\")\n",
+ " wandb.log({\n",
+ " \"epoch\": epoch,\n",
+ " \"train_loss\": avg_train_loss,\n",
+ " \"train_precision\": train_precision,\n",
+ " \"train_recall\": train_recall,\n",
+ " \"train_f1\": train_f1,\n",
+ " \"train_acc\": train_acc,\n",
+ " \"val_precision\": val_precision,\n",
+ " \"val_recall\": val_recall,\n",
+ " \"val_f1\": val_f1,\n",
+ " \"val_acc\": val_acc\n",
+ " })\n",
+ "\n",
+ " # Save best model based on val_f1\n",
+ " if val_f1 > best_val_f1:\n",
+ " best_val_f1 = val_f1\n",
+ " ckpt_path = f\"checkpoints/best_epoch_{epoch}.pt\"\n",
+ " torch.save(model.state_dict(), ckpt_path)\n",
+ " wandb.save(ckpt_path)\n",
+ " print(f\"Saved improved model to {ckpt_path}\")\n",
+ "\n",
+ "# Final evaluation on test set\n",
+ "print(\"Evaluating on test set...\")\n",
+ "test_preds, test_true = [], []\n",
+ "model.eval()\n",
+ "with torch.no_grad():\n",
+ " for x, y, _ in loaders['test']:\n",
+ " mask = (y != -1)\n",
+ " preds = model.decode(x, mask)\n",
+ " for pred_seq, true_seq, m in zip(preds, y, mask):\n",
+ " test_true.extend(true_seq[m].tolist())\n",
+ " test_preds.extend(pred_seq)\n",
+ "\n",
+ "# Classification report\n",
+ "report_dict = classification_report(test_true, test_preds, output_dict=True)\n",
+ "print(classification_report(test_true, test_preds))\n",
+ "\n",
+ "# Log classification report table to wandb\n",
+ "columns = [\"label\", \"precision\", \"recall\", \"f1-score\", \"support\"]\n",
+ "rows = []\n",
+ "for label, metrics in report_dict.items():\n",
+ " if label not in [\"accuracy\", \"macro avg\", \"weighted avg\"]:\n",
+ " rows.append([label, metrics['precision'], metrics['recall'], metrics['f1-score'], metrics['support']])\n",
+ "# Add overall averages\n",
+ "rows.append([\"macro avg\", report_dict['macro avg']['precision'], report_dict['macro avg']['recall'], report_dict['macro avg']['f1-score'], report_dict['macro avg']['support']])\n",
+ "rows.append([\"weighted avg\", report_dict['weighted avg']['precision'], report_dict['weighted avg']['recall'], report_dict['weighted avg']['f1-score'], report_dict['weighted avg']['support']])\n",
+ "\n",
+ "table = wandb.Table(columns=columns, data=rows)\n",
+ "wandb.log({\"test_classification\": table})\n",
+ "\n",
+ "# Finish W&B run\n",
+ "wandb.finish()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "28KlV4cy8SAL",
+ "outputId": "d4700801-e21c-4559-ff6a-50ebd3643cc4"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "Tracking run with wandb version 0.19.11"
+ ],
+ "text/plain": [
+ "/content/wandb/run-20250606_015838-r3oj54fe
"
+ ],
+ "text/plain": [
+ "epoch | ▁▁▂▂▂▃▃▄▄▄▅▅▅▆▆▇▇▇██ |
train_acc | ▁▄▅▅▅▆▆▇▇▇▇▇▇███▇███ |
train_f1 | ▁▄▅▆▅▆▇▇▇▇▇▇▇███▇███ |
train_loss | █▃▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁ |
train_precision | ▁▃▄▃▅▆▅▆▆▇▆▇▇▇███▇▇█ |
train_recall | ▁▄▅▆▅▆▇▇▇▇▇▇▇██▇▇███ |
val_acc | ▁▅▆▇▆▇█▇████████████ |
val_f1 | ▁▅▆▇▆▇█▇████████▇███ |
val_precision | ▁▅▄▃▅▇▆▇▇▇▅▆▆▇▇▇█▆▆▇ |
val_recall | ▁▅▆█▆▇█▇██████▇▇▇███ |
epoch | 20 |
train_acc | 0.99748 |
train_f1 | 0.97193 |
train_loss | 0.16354 |
train_precision | 0.97333 |
train_recall | 0.9706 |
val_acc | 0.99327 |
val_f1 | 0.92372 |
val_precision | 0.93356 |
val_recall | 0.91553 |
./wandb/run-20250606_015838-r3oj54fe/logs
"
+ ]
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Train CRF With Kerras"
+ ],
+ "metadata": {
+ "id": "LV5FdgTTXFv3"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import numpy as np\n",
+ "from tensorflow.keras.preprocessing.sequence import pad_sequences\n",
+ "\n",
+ "X = [emb.numpy() for emb in all_embeddings]\n",
+ "y = [label.numpy() for label in all_labels]\n",
+ "\n",
+ "max_len = max(len(seq) for seq in X)\n",
+ "num_tags = max(label.max().item() for label in all_labels) + 1\n",
+ "\n",
+ "X_padded = pad_sequences(X, maxlen=max_len, dtype='float32', padding='post')\n",
+ "y_padded = pad_sequences(y, maxlen=max_len, value=-1)\n"
+ ],
+ "metadata": {
+ "id": "l_m8_-UgHlxo"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import tensorflow as tf\n",
+ "import tensorflow_addons as tfa\n",
+ "from tensorflow.keras import layers, Model, Input\n",
+ "\n",
+ "input_dim = X_padded.shape[2]\n",
+ "\n",
+ "inputs = Input(shape=(max_len, input_dim), name=\"input_embedding\")\n",
+ "masking = layers.Masking(mask_value=0.0)(inputs)\n",
+ "dense = layers.Dense(num_tags)(masking)\n",
+ "\n",
+ "# CRF Layer\n",
+ "crf = tfa.layers.CRF(num_tags)\n",
+ "outputs = crf(dense)\n",
+ "\n",
+ "model = Model(inputs=inputs, outputs=outputs)\n",
+ "model.compile(optimizer='adam', loss=crf.loss, metrics=[crf.accuracy])\n",
+ "model.summary()\n"
+ ],
+ "metadata": {
+ "id": "kYrGkzFPXMBH"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "model.fit(\n",
+ " X_padded, y_padded,\n",
+ " batch_size=32,\n",
+ " epochs=5,\n",
+ " validation_split=0.1,\n",
+ " verbose=1\n",
+ ")\n"
+ ],
+ "metadata": {
+ "id": "pyxVhvn3XQ5q"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "pred = model.predict(X_padded)\n",
+ "pred_labels = np.argmax(pred, axis=-1)\n",
+ "\n",
+ "from sklearn.metrics import classification_report\n",
+ "\n",
+ "y_true_flat = []\n",
+ "y_pred_flat = []\n",
+ "\n",
+ "for i in range(len(y_padded)):\n",
+ " for j in range(max_len):\n",
+ " if y_padded[i][j] != -1:\n",
+ " y_true_flat.append(y_padded[i][j])\n",
+ " y_pred_flat.append(pred_labels[i][j])\n",
+ "\n",
+ "print(classification_report(y_true_flat, y_pred_flat, digits=4))\n"
+ ],
+ "metadata": {
+ "id": "zT7BtMiVXSMc"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Train Random Forest"
+ ],
+ "metadata": {
+ "id": "1VrZlknUb6cn"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import torch\n",
+ "import numpy as np\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "\n",
+ "X_flat = []\n",
+ "y_flat = []\n",
+ "\n",
+ "for emb_seq, label_seq in zip(all_embeddings, all_labels):\n",
+ " for emb, label in zip(emb_seq, label_seq):\n",
+ " X_flat.append(emb.numpy()) # emb: [768]\n",
+ " y_flat.append(label.item()) # label: int\n",
+ "\n",
+ "X_flat = np.array(X_flat) # [N, 768]\n",
+ "y_flat = np.array(y_flat) # [N]\n"
+ ],
+ "metadata": {
+ "id": "VK2nmLo0b8d3"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "print(X_flat.shape)\n",
+ "print(y_flat.shape)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "GeqgiB4CtzA1",
+ "outputId": "452979ff-25be-49a9-c809-4acffd3b3c54"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "(368172, 768)\n",
+ "(368172,)\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Kiểm tra độ lệch data\n",
+ "unique_values, counts = np.unique(y_flat, return_counts=True)\n",
+ "\n",
+ "# In ra từng giá trị và số lần xuất hiện\n",
+ "for val, count in zip(unique_values, counts):\n",
+ " print(f\"Label {val}: {count} times\")\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "VeSfRzgOm6w-",
+ "outputId": "163a877f-9860-4b3a-e850-f6d8df9c6cfe"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Label 0: 344986 times\n",
+ "Label 1: 7450 times\n",
+ "Label 2: 3504 times\n",
+ "Label 3: 1204 times\n",
+ "Label 4: 2050 times\n",
+ "Label 5: 6211 times\n",
+ "Label 6: 2767 times\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "X_train, X_test, y_train, y_test = train_test_split(\n",
+ " X_flat, y_flat, test_size=0.2, random_state=42, stratify=y_flat)\n"
+ ],
+ "metadata": {
+ "id": "AOOUix-NcERf"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import lightgbm as lgb\n",
+ "from sklearn.metrics import accuracy_score, f1_score, classification_report\n",
+ "\n",
+ "# Khởi tạo wandb project\n",
+ "wandb.init(project=\"NER\", name=\"RandomForest_100Trees_VLSP2016\")\n",
+ "\n",
+ "# Tạo Dataset cho LightGBM\n",
+ "train_data = lgb.Dataset(X_train, label=y_train)\n",
+ "test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)\n",
+ "\n",
+ "# Cấu hình tham số LightGBM (Random Forest mode)\n",
+ "params = {\n",
+ " \"objective\": \"multiclass\", # nếu multiclass classification\n",
+ " \"num_class\": len(np.unique(y_train)),\n",
+ " \"metric\": \"multi_logloss\",\n",
+ " \"boosting_type\": \"rf\", # random forest mode trong LightGBM\n",
+ " \"num_leaves\": 31,\n",
+ " \"bagging_freq\": 1,\n",
+ " \"bagging_fraction\": 0.8,\n",
+ " \"feature_fraction\": 0.8,\n",
+ " \"bagging_seed\": 42,\n",
+ " \"verbose\": -1,\n",
+ " \"seed\": 42,\n",
+ " \"is_unbalance\": True\n",
+ "}\n",
+ "\n",
+ "\n",
+ "\n",
+ "# Train model, tích hợp wandb callback để log metrics\n",
+ "model = lgb.train(\n",
+ " params,\n",
+ " train_data,\n",
+ " num_boost_round=100,\n",
+ " valid_sets=[train_data, test_data],\n",
+ " valid_names=[\"train\", \"test\"],\n",
+ " callbacks=[wandb.lightgbm.wandb_callback()]\n",
+ ")\n",
+ "\n",
+ "# Dự đoán trên test set\n",
+ "y_pred_prob = model.predict(X_test)\n",
+ "y_pred = np.argmax(y_pred_prob, axis=1)\n",
+ "\n",
+ "# Ánh xạ số về nhãn tên entity\n",
+ "label_map = {\n",
+ " 0: 'O',\n",
+ " 1: 'B-PER',\n",
+ " 2: 'I-PER',\n",
+ " 3: 'B-ORG',\n",
+ " 4: 'I-ORG',\n",
+ " 5: 'B-LOC',\n",
+ " 6: 'I-LOC'\n",
+ "}\n",
+ "\n",
+ "# Chuyển y_test và y_pred sang nhãn gốc\n",
+ "y_test_labels = [label_map[i] for i in y_test]\n",
+ "y_pred_labels = [label_map[i] for i in y_pred]\n",
+ "\n",
+ "# In classification report với nhãn thật\n",
+ "print(\"\\nClassification Report (theo label gốc):\")\n",
+ "print(classification_report(y_test_labels, y_pred_labels, digits=4))\n",
+ "\n",
+ "# Tạo bảng để log classification report\n",
+ "report_dict = classification_report(y_test_labels, y_pred_labels, output_dict=True)\n",
+ "table = wandb.Table(columns=[\"Label\", \"Precision\", \"Recall\", \"F1-Score\", \"Support\"])\n",
+ "\n",
+ "for label, scores in report_dict.items():\n",
+ " if isinstance(scores, dict): # Bỏ các dòng như 'accuracy'\n",
+ " table.add_data(\n",
+ " label,\n",
+ " scores[\"precision\"],\n",
+ " scores[\"recall\"],\n",
+ " scores[\"f1-score\"],\n",
+ " scores[\"support\"]\n",
+ " )\n",
+ "\n",
+ "wandb.log({\"Classification Report\": table})\n",
+ "\n",
+ "\n",
+ "# Kết thúc wandb run\n",
+ "wandb.finish()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 721
+ },
+ "id": "G6PUbpyPgF84",
+ "outputId": "6efc696f-1b6f-4cea-da68-c25e22bed461"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "/content/wandb/run-20250605_114334-x4x6fpo4
"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "iteration | ▁▁▁▂▂▂▂▃▃▃▃▃▃▃▃▄▄▄▄▄▅▅▅▅▅▅▅▆▆▆▆▆▆▇▇▇▇▇██ |
test_multi_logloss | █▆▄▄▃▃▃▃▂▂▂▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ |
train_multi_logloss | █▇▅▄▄▃▃▂▂▂▂▂▁▁▁▁▁▁▁▁▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ |
iteration | 99 |
./wandb/run-20250605_114334-x4x6fpo4/logs
"
+ ]
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Lưu data"
+ ],
+ "metadata": {
+ "id": "4Ppa-bdT8r2v"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "def save_tensors(all_embeddings, all_labels, embed_path='embeddings.pt', label_path='labels.pt'):\n",
+ " torch.save(all_embeddings, embed_path)\n",
+ " torch.save(all_labels, label_path)\n",
+ " print(f\"Saved embeddings to {embed_path} and labels to {label_path}\")"
+ ],
+ "metadata": {
+ "id": "s9GulKoGqx6d"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from google.colab import drive\n",
+ "import shutil\n",
+ "\n",
+ "# Gọi hàm đã viết\n",
+ "save_tensors(all_embeddings, all_labels)\n",
+ "\n",
+ "# Mount và tải lên Drive\n",
+ "drive.mount('/content/drive')\n",
+ "shutil.copy('embeddings.pt', '/content/drive/My Drive')\n",
+ "shutil.copy('labels.pt', '/content/drive/My Drive')\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 70
+ },
+ "id": "AGAJZH_h8ve6",
+ "outputId": "13849039-adb8-40e8-ed20-544f65d018f8"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Saved embeddings to embeddings.pt and labels to labels.pt\n",
+ "Mounted at /content/drive\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "'/content/drive/My Drive/labels.pt'"
+ ],
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "type": "string"
+ }
+ },
+ "metadata": {},
+ "execution_count": 14
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "model.save_model('lightgbm_rf_model.txt')\n",
+ "shutil.copy('lightgbm_rf_model.txt', '/content/drive/My Drive')"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ },
+ "id": "ESWu8QI59dwl",
+ "outputId": "7eba9b3d-4c54-48ca-99eb-76771c01140e"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "'/content/drive/My Drive/lightgbm_rf_model.txt'"
+ ],
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "type": "string"
+ }
+ },
+ "metadata": {},
+ "execution_count": 16
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [],
+ "metadata": {
+ "id": "BKx8yPUE-UHS"
+ },
+ "execution_count": null,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/notebooks/Kien_RF_lightgbm.ipynb b/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/notebooks/Kien_RF_lightgbm.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..91816b305704056445c06ec42b1de606a49b9d23
--- /dev/null
+++ b/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/space/notebooks/Kien_RF_lightgbm.ipynb
@@ -0,0 +1,741 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "id": "10ec017cb658e125",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-06-11T00:21:33.244538Z",
+ "start_time": "2025-06-11T00:21:05.317283Z"
+ }
+ },
+ "source": [
+ "import pandas as pd\n",
+ "\n",
+ "splits = {'train': 'data/train-00000-of-00001-b0417886a268b83a.parquet', 'valid': 'data/valid-00000-of-00001-846411c236133ba3.parquet'}\n",
+ "df_train = pd.read_parquet(\"hf://datasets/datnth1709/VLSP2016-NER-data/\" + splits[\"train\"])\n",
+ "df_valid = pd.read_parquet(\"hf://datasets/datnth1709/VLSP2016-NER-data/\" + splits[\"valid\"])\n",
+ "df = pd.concat([df_train, df_valid]).reset_index(drop=True)"
+ ],
+ "outputs": [],
+ "execution_count": 1
+ },
+ {
+ "cell_type": "code",
+ "id": "c533c55a2ad7b16e",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-06-11T00:21:33.499341Z",
+ "start_time": "2025-06-11T00:21:33.262933Z"
+ }
+ },
+ "source": [
+ "# Tạo thêm các cột khác\n",
+ "def join_tokens(tokens):\n",
+ " text = ' '.join(tokens)\n",
+ " return text\n",
+ "\n",
+ "def reform_raw_text(tokens):\n",
+ " text = ' '.join(tokens)\n",
+ " return text.replace(\"_\", \" \")\n",
+ "\n",
+ "def label(x):\n",
+ " return [id_tag[int(i)] for i in x]\n",
+ "\n",
+ "def replace_7_8(lst):\n",
+ " return [0 if x in (7, 8) else x for x in lst]\n",
+ "\n",
+ "\n",
+ "tag_id = {'O': 0, 'B-PER': 1, 'I-PER': 2, 'B-ORG': 3, 'I-ORG': 4, 'B-LOC': 5, 'I-LOC': 6}\n",
+ "id_tag = {0: 'O', 1: 'B-PER', 2: 'I-PER', 3: 'B-ORG', 4: 'I-ORG', 5: 'B-LOC', 6: 'I-LOC'}\n",
+ "\n",
+ "\n",
+ "df['ner_tags'] = df['ner_tags'].apply(replace_7_8)\n",
+ "df['text_withseg'] = df['tokens'].apply(join_tokens)\n",
+ "df['text_raw'] = df['tokens'].apply(reform_raw_text)\n",
+ "df[\"ner_labels\"] = df.ner_tags.apply(label)\n",
+ "df.columns = ['tokens', 'id', 'seg_text', 'raw_text', 'labels']\n",
+ "df\n"
+ ],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ " tokens \\\n",
+ "0 [Không_khí, thật, náo_nhiệt, .] \n",
+ "1 [Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... \n",
+ "2 [Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... \n",
+ "3 [Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... \n",
+ "4 [Nhật_ký, của, thuyền_viên, .] \n",
+ "... ... \n",
+ "16853 [Nghe, thấy, đã, ghê_ghê, nhưng, Nhiêu, chưa, ... \n",
+ "16854 [Nhưng, mọi, chuyện, không, dừng, ở, đó, .] \n",
+ "16855 [Hoà, bảo, thời_gian, đầu, mặc_cảm, lắm, ,, ở,... \n",
+ "16856 [Biết_bao, người, đã, tình_nguyện, hiến_dâng, ... \n",
+ "16857 [Trên, đây, mới, là, “, thành_tích, ”, tiêu, t... \n",
+ "\n",
+ " id \\\n",
+ "0 [0, 0, 0, 0] \n",
+ "1 [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n",
+ "2 [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... \n",
+ "3 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... \n",
+ "4 [0, 0, 0, 0] \n",
+ "... ... \n",
+ "16853 [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, ... \n",
+ "16854 [0, 0, 0, 0, 0, 0, 0, 0] \n",
+ "16855 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n",
+ "16856 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n",
+ "16857 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... \n",
+ "\n",
+ " seg_text \\\n",
+ "0 Không_khí thật náo_nhiệt . \n",
+ "1 Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... \n",
+ "2 Suy_tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... \n",
+ "3 Hoà bảo hồi mới qua đâu có biết nấu_nướng gì ,... \n",
+ "4 Nhật_ký của thuyền_viên . \n",
+ "... ... \n",
+ "16853 Nghe thấy đã ghê_ghê nhưng Nhiêu chưa được tườ... \n",
+ "16854 Nhưng mọi chuyện không dừng ở đó . \n",
+ "16855 Hoà bảo thời_gian đầu mặc_cảm lắm , ở trong nh... \n",
+ "16856 Biết_bao người đã tình_nguyện hiến_dâng cả cuộ... \n",
+ "16857 Trên đây mới là “ thành_tích ” tiêu tiền của m... \n",
+ "\n",
+ " raw_text \\\n",
+ "0 Không khí thật náo nhiệt . \n",
+ "1 Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... \n",
+ "2 Suy tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... \n",
+ "3 Hoà bảo hồi mới qua đâu có biết nấu nướng gì ,... \n",
+ "4 Nhật ký của thuyền viên . \n",
+ "... ... \n",
+ "16853 Nghe thấy đã ghê ghê nhưng Nhiêu chưa được tườ... \n",
+ "16854 Nhưng mọi chuyện không dừng ở đó . \n",
+ "16855 Hoà bảo thời gian đầu mặc cảm lắm , ở trong nh... \n",
+ "16856 Biết bao người đã tình nguyện hiến dâng cả cuộ... \n",
+ "16857 Trên đây mới là “ thành tích ” tiêu tiền của m... \n",
+ "\n",
+ " labels \n",
+ "0 [O, O, O, O] \n",
+ "1 [O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... \n",
+ "2 [O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... \n",
+ "3 [B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... \n",
+ "4 [O, O, O, O] \n",
+ "... ... \n",
+ "16853 [O, O, O, O, O, B-PER, O, O, O, O, O, O, O, O,... \n",
+ "16854 [O, O, O, O, O, O, O, O] \n",
+ "16855 [B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... \n",
+ "16856 [O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] \n",
+ "16857 [O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... \n",
+ "\n",
+ "[16858 rows x 5 columns]"
+ ],
+ "text/html": [
+ "\n", + " | tokens | \n", + "id | \n", + "seg_text | \n", + "raw_text | \n", + "labels | \n", + "
---|---|---|---|---|---|
0 | \n", + "[Không_khí, thật, náo_nhiệt, .] | \n", + "[0, 0, 0, 0] | \n", + "Không_khí thật náo_nhiệt . | \n", + "Không khí thật náo nhiệt . | \n", + "[O, O, O, O] | \n", + "
1 | \n", + "[Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... | \n", + "[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "[O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... | \n", + "
2 | \n", + "[Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... | \n", + "[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Suy_tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "Suy tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "[O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... | \n", + "
3 | \n", + "[Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu_nướng gì ,... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu nướng gì ,... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... | \n", + "
4 | \n", + "[Nhật_ký, của, thuyền_viên, .] | \n", + "[0, 0, 0, 0] | \n", + "Nhật_ký của thuyền_viên . | \n", + "Nhật ký của thuyền viên . | \n", + "[O, O, O, O] | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
16853 | \n", + "[Nghe, thấy, đã, ghê_ghê, nhưng, Nhiêu, chưa, ... | \n", + "[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, ... | \n", + "Nghe thấy đã ghê_ghê nhưng Nhiêu chưa được tườ... | \n", + "Nghe thấy đã ghê ghê nhưng Nhiêu chưa được tườ... | \n", + "[O, O, O, O, O, B-PER, O, O, O, O, O, O, O, O,... | \n", + "
16854 | \n", + "[Nhưng, mọi, chuyện, không, dừng, ở, đó, .] | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "[O, O, O, O, O, O, O, O] | \n", + "
16855 | \n", + "[Hoà, bảo, thời_gian, đầu, mặc_cảm, lắm, ,, ở,... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Hoà bảo thời_gian đầu mặc_cảm lắm , ở trong nh... | \n", + "Hoà bảo thời gian đầu mặc cảm lắm , ở trong nh... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
16856 | \n", + "[Biết_bao, người, đã, tình_nguyện, hiến_dâng, ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "Biết_bao người đã tình_nguyện hiến_dâng cả cuộ... | \n", + "Biết bao người đã tình nguyện hiến dâng cả cuộ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
16857 | \n", + "[Trên, đây, mới, là, “, thành_tích, ”, tiêu, t... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Trên đây mới là “ thành_tích ” tiêu tiền của m... | \n", + "Trên đây mới là “ thành tích ” tiêu tiền của m... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
16858 rows × 5 columns
\n", + "\n", + " | tokens | \n", + "ner_tags | \n", + "ner_labels | \n", + "
---|---|---|---|
0 | \n", + "[Không_khí, thật, náo_nhiệt, .] | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "
1 | \n", + "[Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... | \n", + "[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... | \n", + "
2 | \n", + "[Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... | \n", + "[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... | \n", + "
3 | \n", + "[Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... | \n", + "
4 | \n", + "[Nhật_ký, của, thuyền_viên, .] | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "
16853 | \n", + "[Nghe, thấy, đã, ghê_ghê, nhưng, Nhiêu, chưa, ... | \n", + "[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, ... | \n", + "[O, O, O, O, O, B-PER, O, O, O, O, O, O, O, O,... | \n", + "
16854 | \n", + "[Nhưng, mọi, chuyện, không, dừng, ở, đó, .] | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O] | \n", + "
16855 | \n", + "[Hoà, bảo, thời_gian, đầu, mặc_cảm, lắm, ,, ở,... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
16856 | \n", + "[Biết_bao, người, đã, tình_nguyện, hiến_dâng, ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
16857 | \n", + "[Trên, đây, mới, là, “, thành_tích, ”, tiêu, t... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
16858 rows × 3 columns
\n", + "\n", + " | tokens | \n", + "ner_tags | \n", + "ner_labels | \n", + "
---|---|---|---|
0 | \n", + "[Không_khí, thật, náo_nhiệt, .] | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "
1 | \n", + "[Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... | \n", + "[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... | \n", + "
2 | \n", + "[Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... | \n", + "[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... | \n", + "
3 | \n", + "[Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... | \n", + "
4 | \n", + "[Nhật_ký, của, thuyền_viên, .] | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "
\n", + " | tokens | \n", + "ner_tags | \n", + "ner_labels | \n", + "text_withseg | \n", + "text_raw | \n", + "
---|---|---|---|---|---|
0 | \n", + "[Không_khí, thật, náo_nhiệt, .] | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "Không_khí thật náo_nhiệt . | \n", + "Không khí thật náo nhiệt . | \n", + "
1 | \n", + "[Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... | \n", + "[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "
2 | \n", + "[Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... | \n", + "[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... | \n", + "Suy_tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "Suy tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "
3 | \n", + "[Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu_nướng gì ,... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu nướng gì ,... | \n", + "
4 | \n", + "[Nhật_ký, của, thuyền_viên, .] | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "Nhật_ký của thuyền_viên . | \n", + "Nhật ký của thuyền viên . | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
16853 | \n", + "[Nghe, thấy, đã, ghê_ghê, nhưng, Nhiêu, chưa, ... | \n", + "[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, ... | \n", + "[O, O, O, O, O, B-PER, O, O, O, O, O, O, O, O,... | \n", + "Nghe thấy đã ghê_ghê nhưng Nhiêu chưa được tườ... | \n", + "Nghe thấy đã ghê ghê nhưng Nhiêu chưa được tườ... | \n", + "
16854 | \n", + "[Nhưng, mọi, chuyện, không, dừng, ở, đó, .] | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O] | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "
16855 | \n", + "[Hoà, bảo, thời_gian, đầu, mặc_cảm, lắm, ,, ở,... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "Hoà bảo thời_gian đầu mặc_cảm lắm , ở trong nh... | \n", + "Hoà bảo thời gian đầu mặc cảm lắm , ở trong nh... | \n", + "
16856 | \n", + "[Biết_bao, người, đã, tình_nguyện, hiến_dâng, ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Biết_bao người đã tình_nguyện hiến_dâng cả cuộ... | \n", + "Biết bao người đã tình nguyện hiến dâng cả cuộ... | \n", + "
16857 | \n", + "[Trên, đây, mới, là, “, thành_tích, ”, tiêu, t... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Trên đây mới là “ thành_tích ” tiêu tiền của m... | \n", + "Trên đây mới là “ thành tích ” tiêu tiền của m... | \n", + "
16858 rows × 5 columns
\n", + "\n", + " | count | \n", + "
---|---|
tag | \n", + "\n", + " |
B-PER | \n", + "7479 | \n", + "
B-LOC | \n", + "6244 | \n", + "
I-PER | \n", + "3522 | \n", + "
I-LOC | \n", + "2783 | \n", + "
I-ORG | \n", + "2055 | \n", + "
B-ORG | \n", + "1212 | \n", + "
B-NAT | \n", + "282 | \n", + "
I-NAT | \n", + "279 | \n", + "
\n", + " | org_idx | \n", + "token | \n", + "tag | \n", + "
---|---|---|---|
11323 | \n", + "8102 | \n", + "[Rơ] | \n", + "B-PER | \n", + "
19936 | \n", + "14208 | \n", + "[Thạc] | \n", + "B-PER | \n", + "
5074 | \n", + "3612 | \n", + "[Khánh] | \n", + "B-PER | \n", + "
8870 | \n", + "6383 | \n", + "[Bibi] | \n", + "B-PER | \n", + "
5927 | \n", + "4246 | \n", + "[Thuỳ] | \n", + "B-PER | \n", + "
17122 | \n", + "12272 | \n", + "[Chương] | \n", + "B-PER | \n", + "
3236 | \n", + "2290 | \n", + "[Claudia] | \n", + "B-PER | \n", + "
16903 | \n", + "12150 | \n", + "[Chương] | \n", + "B-PER | \n", + "
1953 | \n", + "1364 | \n", + "[Thạc] | \n", + "B-PER | \n", + "
21888 | \n", + "15557 | \n", + "[Đợi] | \n", + "B-PER | \n", + "
\n", + " | org_idx | \n", + "token | \n", + "tag | \n", + "
---|---|---|---|
3154 | \n", + "2236 | \n", + "[tiếng] | \n", + "B-NAT | \n", + "
4887 | \n", + "3419 | \n", + "[VN] | \n", + "B-NAT | \n", + "
419 | \n", + "269 | \n", + "[Người] | \n", + "B-NAT | \n", + "
2548 | \n", + "1821 | \n", + "[người] | \n", + "B-NAT | \n", + "
993 | \n", + "678 | \n", + "[người] | \n", + "B-NAT | \n", + "
13032 | \n", + "9305 | \n", + "[Mỹ] | \n", + "B-NAT | \n", + "
13183 | \n", + "9436 | \n", + "[tiếng] | \n", + "B-NAT | \n", + "
14119 | \n", + "10184 | \n", + "[tiếng] | \n", + "B-NAT | \n", + "
942 | \n", + "640 | \n", + "[người] | \n", + "B-NAT | \n", + "
14846 | \n", + "10741 | \n", + "[người] | \n", + "B-NAT | \n", + "
\n", + " | tokens | \n", + "ner_tags | \n", + "ner_labels | \n", + "text_withseg | \n", + "text_raw | \n", + "ner_tags_replaced_nat | \n", + "ner_labels_replaced_nat | \n", + "
---|---|---|---|---|---|---|---|
40 | \n", + "[Nguyên, phân_công, anh, bạn, đồng_nghiệp, ở, ... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "Nguyên phân_công anh bạn đồng_nghiệp ở vòng ng... | \n", + "Nguyên phân công anh bạn đồng nghiệp ở vòng ng... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
41 | \n", + "[Theo, kế_hoạch, ,, những, ngày, đầu, cả, hai,... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, B-NAT, I-NAT, O, O... | \n", + "Theo kế_hoạch , những ngày đầu cả hai luyện ti... | \n", + "Theo kế hoạch , những ngày đầu cả hai luyện ti... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
42 | \n", + "[Thật, đáng, tiếc, biết_bao, ,, những, ngày, n... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Thật đáng tiếc biết_bao , những ngày này trăng... | \n", + "Thật đáng tiếc biết bao , những ngày này trăng... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
43 | \n", + "[Hải, và, bố_mẹ, ngày, trước, ở, chung, với, ô... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, B-LOC, I-LO... | \n", + "Hải và bố_mẹ ngày trước ở chung với ông_bà trê... | \n", + "Hải và bố mẹ ngày trước ở chung với ông bà trê... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, B-LOC, I-LO... | \n", + "
44 | \n", + "[Cho_nên, phương_án, của, ông, Phong, là, “, b... | \n", + "[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, B-PER, O, O, O, O, O, O, O, O, O,... | \n", + "Cho_nên phương_án của ông Phong là “ bán cả co... | \n", + "Cho nên phương án của ông Phong là “ bán cả co... | \n", + "[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, B-PER, O, O, O, O, O, O, O, O, O,... | \n", + "
45 | \n", + "[Một, thời_gian, ngắn, sau, trận, tỉ_thí, lịch... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, B-PER, I-PER, O, O, O... | \n", + "Một thời_gian ngắn sau trận tỉ_thí lịch_sử , M... | \n", + "Một thời gian ngắn sau trận tỉ thí lịch sử , M... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, B-PER, I-PER, O, O, O... | \n", + "
46 | \n", + "[Kao, chỉ, mới, được, gửi, lên, đây, hơn, một,... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "Kao chỉ mới được gửi lên đây hơn một tuần , nh... | \n", + "Kao chỉ mới được gửi lên đây hơn một tuần , nh... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
47 | \n", + "[An_Lư, cũng, tích_cực, đào_tạo, các, thuyền_v... | \n", + "[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-LOC, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "An_Lư cũng tích_cực đào_tạo các thuyền_viên ng... | \n", + "An Lư cũng tích cực đào tạo các thuyền viên ng... | \n", + "[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-LOC, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
48 | \n", + "[Anh, cười, tươi, :, \", Nếu, không, thắng, thì... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Anh cười tươi : \" Nếu không thắng thì đâu còn ... | \n", + "Anh cười tươi : \" Nếu không thắng thì đâu còn ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
49 | \n", + "[Hắn, không, có, một, dữ_liệu, nào, nằm, trong... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Hắn không có một dữ_liệu nào nằm trong tay thá... | \n", + "Hắn không có một dữ liệu nào nằm trong tay thá... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
50 | \n", + "[Và, cho_dù, xảy, ra, tình_huống, nào, thì, ôn... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Và cho_dù xảy ra tình_huống nào thì ông giám_đ... | \n", + "Và cho dù xảy ra tình huống nào thì ông giám đ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
51 | \n", + "[Để, em, tính, lại, .] | \n", + "[0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O] | \n", + "Để em tính lại . | \n", + "Để em tính lại . | \n", + "[0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O] | \n", + "
52 | \n", + "[Ông, đến, có, khi, mặc, sắc_phục, ,, có, khi,... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Ông đến có khi mặc sắc_phục , có khi mặc thườn... | \n", + "Ông đến có khi mặc sắc phục , có khi mặc thườn... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
53 | \n", + "[Có, đứa, trả_lời, :, chưa, có, lúc, nào, thấy... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Có đứa trả_lời : chưa có lúc nào thấy hạnh_phú... | \n", + "Có đứa trả lời : chưa có lúc nào thấy hạnh phú... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
54 | \n", + "[Vậy, đó, ,, lửa, thử, vàng, gian_nan, thử, sứ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O] | \n", + "Vậy đó , lửa thử vàng gian_nan thử sức . | \n", + "Vậy đó , lửa thử vàng gian nan thử sức . | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O] | \n", + "
55 | \n", + "[Chung, một, chữ, \", Lương, \", ...] | \n", + "[0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O] | \n", + "Chung một chữ \" Lương \" ... | \n", + "Chung một chữ \" Lương \" ... | \n", + "[0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O] | \n", + "
56 | \n", + "[Bước, vào, đầu, ngõ, ,, nhà, cô, Cúc, phơi, đ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, B-PER, O, O, O, O, O, O] | \n", + "Bước vào đầu ngõ , nhà cô Cúc phơi đầy bánh_tr... | \n", + "Bước vào đầu ngõ , nhà cô Cúc phơi đầy bánh tr... | \n", + "[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, B-PER, O, O, O, O, O, O] | \n", + "
57 | \n", + "[Nếu, có, trở_ngại, một_chút, thì, đúng, là, l... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 5, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, B-LOC, I-LOC... | \n", + "Nếu có trở_ngại một_chút thì đúng là lượng khá... | \n", + "Nếu có trở ngại một chút thì đúng là lượng khá... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 5, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, B-LOC, I-LOC... | \n", + "
58 | \n", + "[Anh, Dĩa, kéo, chúng_tôi, lên, bờ, ,, khui, b... | \n", + "[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, B-PER, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "Anh Dĩa kéo chúng_tôi lên bờ , khui bia , rượu... | \n", + "Anh Dĩa kéo chúng tôi lên bờ , khui bia , rượu... | \n", + "[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, B-PER, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
59 | \n", + "[Có, đúng, chị, nằm, trên, một, dãy, núi, cao,... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, B-LOC, O] | \n", + "Có đúng chị nằm trên một dãy núi cao ở miền tâ... | \n", + "Có đúng chị nằm trên một dãy núi cao ở miền tâ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, B-LOC, O] | \n", + "
60 | \n", + "[Bắt_đầu, từ, năm, 1961, ,, xã, Nhuận_Đức, phá... | \n", + "[0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, B-LOC, I-LOC, O, O, O, O, O] | \n", + "Bắt_đầu từ năm 1961 , xã Nhuận_Đức phát_động p... | \n", + "Bắt đầu từ năm 1961 , xã Nhuận Đức phát động p... | \n", + "[0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, B-LOC, I-LOC, O, O, O, O, O] | \n", + "
61 | \n", + "[Năm, nay, đầu, trên, xóm, dưới, lắc_đầu, ngao... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Năm nay đầu trên xóm dưới lắc_đầu ngao_ngán bỏ... | \n", + "Năm nay đầu trên xóm dưới lắc đầu ngao ngán bỏ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
62 | \n", + "[Và, đến, nay, những, mét, hầm, cuối_cùng, cũn... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Và đến nay những mét hầm cuối_cùng cũng đã về ... | \n", + "Và đến nay những mét hầm cuối cùng cũng đã về ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
63 | \n", + "[Đèn, đường, loang_loáng, ,, hoà, chung, dòng,... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, B-LOC,... | \n", + "Đèn đường loang_loáng , hoà chung dòng xe tấp_... | \n", + "Đèn đường loang loáng , hoà chung dòng xe tấp ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, B-LOC,... | \n", + "
64 | \n", + "[Cả, đám, bắt_đầu, lên_cơn, lắc, quậy, điên_cu... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O] | \n", + "Cả đám bắt_đầu lên_cơn lắc quậy điên_cuồng ... | \n", + "Cả đám bắt đầu lên cơn lắc quậy điên cuồng ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O] | \n", + "
65 | \n", + "[Ở, trạm_xá, xã, Hưng_Long, đối_diện, với, căn... | \n", + "[0, 0, 5, 6, 0, 0, 0, 0, 0, 1, 2, 2, 2, 0, 0, ... | \n", + "[O, O, B-LOC, I-LOC, O, O, O, O, O, B-PER, I-P... | \n", + "Ở trạm_xá xã Hưng_Long đối_diện với căn nhà tử... | \n", + "Ở trạm xá xã Hưng Long đối diện với căn nhà tử... | \n", + "[0, 0, 5, 6, 0, 0, 0, 0, 0, 1, 2, 2, 2, 0, 0, ... | \n", + "[O, O, B-LOC, I-LOC, O, O, O, O, O, B-PER, I-P... | \n", + "
66 | \n", + "[Mới_đó, mà, ta, xa, nhau, ,, thật, là, kinh_k... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O] | \n", + "Mới_đó mà ta xa nhau , thật là kinh_khủng . | \n", + "Mới đó mà ta xa nhau , thật là kinh khủng . | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O] | \n", + "
67 | \n", + "[Trong, cuộc, chiến_đấu, vì, nghĩa_vụ, quốc_tế... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, B-LOC, O, O, O, B-... | \n", + "Trong cuộc chiến_đấu vì nghĩa_vụ quốc_tế với n... | \n", + "Trong cuộc chiến đấu vì nghĩa vụ quốc tế với n... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, B-LOC, O, O, O, B-... | \n", + "
68 | \n", + "[Mỗi, khi, sóng, dập, vào, và, đẩy, người, lên... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Mỗi khi sóng dập vào và đẩy người lên theo thậ... | \n", + "Mỗi khi sóng dập vào và đẩy người lên theo thậ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
69 | \n", + "[Đây, là, một, giai_đoạn, khó_khăn, ,, đau_đớn... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Đây là một giai_đoạn khó_khăn , đau_đớn nhất c... | \n", + "Đây là một giai đoạn khó khăn , đau đớn nhất c... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
70 | \n", + "[Và, hôm_nay, ,, chúng_ta, cũng, cần, hỏi, câu... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Và hôm_nay , chúng_ta cũng cần hỏi câu hỏi này... | \n", + "Và hôm nay , chúng ta cũng cần hỏi câu hỏi này... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
71 | \n", + "[Thạc_sĩ, thú_y, với, bầy, muông_thú, .] | \n", + "[0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O] | \n", + "Thạc_sĩ thú_y với bầy muông_thú . | \n", + "Thạc sĩ thú y với bầy muông thú . | \n", + "[0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O] | \n", + "
72 | \n", + "[Tôi, lại, điện, hỏi_thăm, ông, khi, về, tới, ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Tôi lại điện hỏi_thăm ông khi về tới nhà , ông... | \n", + "Tôi lại điện hỏi thăm ông khi về tới nhà , ông... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
73 | \n", + "[Hương_Rừng, xuất_hiện, ở, nhiều, nơi, từ, nội... | \n", + "[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, ... | \n", + "[B-LOC, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "Hương_Rừng xuất_hiện ở nhiều nơi từ nội_thành ... | \n", + "Hương Rừng xuất hiện ở nhiều nơi từ nội thành ... | \n", + "[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, ... | \n", + "[B-LOC, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
74 | \n", + "[Nhìn, những, cảnh, đó, mình, cười, mà, nước_m... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "Nhìn những cảnh đó mình cười mà nước_mắt chực ... | \n", + "Nhìn những cảnh đó mình cười mà nước mắt chực ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
75 | \n", + "[Ông, nhớ, mãi, năm, cô, con, gái, út, học, cấ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Ông nhớ mãi năm cô con gái út học cấp II , thư... | \n", + "Ông nhớ mãi năm cô con gái út học cấp II , thư... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
76 | \n", + "[Đường, về, xã, Ia_Yeng, cắt, ngang, cánh, đồn... | \n", + "[0, 0, 5, 6, 0, 0, 0, 0, 5, 0] | \n", + "[O, O, B-LOC, I-LOC, O, O, O, O, B-LOC, O] | \n", + "Đường về xã Ia_Yeng cắt ngang cánh đồng Ayun_Hạ . | \n", + "Đường về xã Ia Yeng cắt ngang cánh đồng Ayun Hạ . | \n", + "[0, 0, 5, 6, 0, 0, 0, 0, 5, 0] | \n", + "[O, O, B-LOC, I-LOC, O, O, O, O, B-LOC, O] | \n", + "
77 | \n", + "[Sang, đây, ,, đầu_tiên, tôi, làm, nghề, rửa, ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Sang đây , đầu_tiên tôi làm nghề rửa chén ở nh... | \n", + "Sang đây , đầu tiên tôi làm nghề rửa chén ở nh... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
78 | \n", + "[Cộng_tác_viên, của, Thanh, ở, Berlin, tìm, đế... | \n", + "[0, 0, 1, 0, 5, 0, 0, 0, 0, 1, 0, 0] | \n", + "[O, O, B-PER, O, B-LOC, O, O, O, O, B-PER, O, O] | \n", + "Cộng_tác_viên của Thanh ở Berlin tìm đến khu_v... | \n", + "Cộng tác viên của Thanh ở Berlin tìm đến khu v... | \n", + "[0, 0, 1, 0, 5, 0, 0, 0, 0, 1, 0, 0] | \n", + "[O, O, B-PER, O, B-LOC, O, O, O, O, B-PER, O, O] | \n", + "
79 | \n", + "[Trời, đang, mưa, lớn, ,, con, tàu, bị, chao, ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "Trời đang mưa lớn , con tàu bị chao lắc rất mạ... | \n", + "Trời đang mưa lớn , con tàu bị chao lắc rất mạ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
\n", + " | tokens | \n", + "text_withseg | \n", + "text_raw | \n", + "ner_tags | \n", + "ner_labels | \n", + "
---|---|---|---|---|---|
41 | \n", + "[Theo, kế_hoạch, ,, những, ngày, đầu, cả, hai,... | \n", + "Theo kế_hoạch , những ngày đầu cả hai luyện ti... | \n", + "Theo kế hoạch , những ngày đầu cả hai luyện ti... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
42 | \n", + "[Thật, đáng, tiếc, biết_bao, ,, những, ngày, n... | \n", + "Thật đáng tiếc biết_bao , những ngày này trăng... | \n", + "Thật đáng tiếc biết bao , những ngày này trăng... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
43 | \n", + "[Hải, và, bố_mẹ, ngày, trước, ở, chung, với, ô... | \n", + "Hải và bố_mẹ ngày trước ở chung với ông_bà trê... | \n", + "Hải và bố mẹ ngày trước ở chung với ông bà trê... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, B-LOC, I-LO... | \n", + "
44 | \n", + "[Cho_nên, phương_án, của, ông, Phong, là, “, b... | \n", + "Cho_nên phương_án của ông Phong là “ bán cả co... | \n", + "Cho nên phương án của ông Phong là “ bán cả co... | \n", + "[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, B-PER, O, O, O, O, O, O, O, O, O,... | \n", + "
45 | \n", + "[Một, thời_gian, ngắn, sau, trận, tỉ_thí, lịch... | \n", + "Một thời_gian ngắn sau trận tỉ_thí lịch_sử , M... | \n", + "Một thời gian ngắn sau trận tỉ thí lịch sử , M... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, B-PER, I-PER, O, O, O... | \n", + "
46 | \n", + "[Kao, chỉ, mới, được, gửi, lên, đây, hơn, một,... | \n", + "Kao chỉ mới được gửi lên đây hơn một tuần , nh... | \n", + "Kao chỉ mới được gửi lên đây hơn một tuần , nh... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
47 | \n", + "[An_Lư, cũng, tích_cực, đào_tạo, các, thuyền_v... | \n", + "An_Lư cũng tích_cực đào_tạo các thuyền_viên ng... | \n", + "An Lư cũng tích cực đào tạo các thuyền viên ng... | \n", + "[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-LOC, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
48 | \n", + "[Anh, cười, tươi, :, \", Nếu, không, thắng, thì... | \n", + "Anh cười tươi : \" Nếu không thắng thì đâu còn ... | \n", + "Anh cười tươi : \" Nếu không thắng thì đâu còn ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
49 | \n", + "[Hắn, không, có, một, dữ_liệu, nào, nằm, trong... | \n", + "Hắn không có một dữ_liệu nào nằm trong tay thá... | \n", + "Hắn không có một dữ liệu nào nằm trong tay thá... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
\n", + " | count | \n", + "
---|---|
tag | \n", + "\n", + " |
B-PER | \n", + "7479 | \n", + "
B-LOC | \n", + "6244 | \n", + "
I-PER | \n", + "3522 | \n", + "
I-LOC | \n", + "2783 | \n", + "
I-ORG | \n", + "2055 | \n", + "
B-ORG | \n", + "1212 | \n", + "
\n", + " | tokens | \n", + "text_withseg | \n", + "text_raw | \n", + "ner_tags | \n", + "ner_labels | \n", + "token_lengths | \n", + "sentence_length | \n", + "
---|---|---|---|---|---|---|---|
0 | \n", + "[Không_khí, thật, náo_nhiệt, .] | \n", + "Không_khí thật náo_nhiệt . | \n", + "Không khí thật náo nhiệt . | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "[9, 4, 9, 1] | \n", + "4 | \n", + "
1 | \n", + "[Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... | \n", + "[3, 4, 2, 4, 2, 2, 1, 4, 4, 4, 3, 3, 4, 3, 4, ... | \n", + "31 | \n", + "
2 | \n", + "[Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... | \n", + "Suy_tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "Suy tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... | \n", + "[8, 3, 1, 4, 3, 3, 4, 3, 2, 2, 4, 1, 3, 3, 1, ... | \n", + "33 | \n", + "
3 | \n", + "[Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu_nướng gì ,... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu nướng gì ,... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... | \n", + "[3, 3, 3, 3, 3, 3, 2, 4, 9, 2, 1, 3, 3, 3, 3, ... | \n", + "43 | \n", + "
4 | \n", + "[Nhật_ký, của, thuyền_viên, .] | \n", + "Nhật_ký của thuyền_viên . | \n", + "Nhật ký của thuyền viên . | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "[7, 3, 11, 1] | \n", + "4 | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
16853 | \n", + "[Nghe, thấy, đã, ghê_ghê, nhưng, Nhiêu, chưa, ... | \n", + "Nghe thấy đã ghê_ghê nhưng Nhiêu chưa được tườ... | \n", + "Nghe thấy đã ghê ghê nhưng Nhiêu chưa được tườ... | \n", + "[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, ... | \n", + "[O, O, O, O, O, B-PER, O, O, O, O, O, O, O, O,... | \n", + "[4, 4, 2, 7, 5, 5, 4, 4, 5, 1, 3, 3, 3, 4, 5, ... | \n", + "21 | \n", + "
16854 | \n", + "[Nhưng, mọi, chuyện, không, dừng, ở, đó, .] | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O] | \n", + "[5, 3, 6, 5, 4, 1, 2, 1] | \n", + "8 | \n", + "
16855 | \n", + "[Hoà, bảo, thời_gian, đầu, mặc_cảm, lắm, ,, ở,... | \n", + "Hoà bảo thời_gian đầu mặc_cảm lắm , ở trong nh... | \n", + "Hoà bảo thời gian đầu mặc cảm lắm , ở trong nh... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "[3, 3, 9, 3, 7, 3, 1, 1, 5, 3, 8, 2, 5, 4, 3, ... | \n", + "29 | \n", + "
16856 | \n", + "[Biết_bao, người, đã, tình_nguyện, hiến_dâng, ... | \n", + "Biết_bao người đã tình_nguyện hiến_dâng cả cuộ... | \n", + "Biết bao người đã tình nguyện hiến dâng cả cuộ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "[8, 5, 2, 11, 9, 2, 8, 4, 2, 3, 3, 7, 1, 5, 1] | \n", + "15 | \n", + "
16857 | \n", + "[Trên, đây, mới, là, “, thành_tích, ”, tiêu, t... | \n", + "Trên đây mới là “ thành_tích ” tiêu tiền của m... | \n", + "Trên đây mới là “ thành tích ” tiêu tiền của m... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "[4, 3, 3, 2, 1, 10, 1, 4, 4, 3, 7, 5, 2, 5, 9,... | \n", + "22 | \n", + "
16858 rows × 7 columns
\n", + "\n", + " | tokens | \n", + "text_withseg | \n", + "text_raw | \n", + "ner_tags | \n", + "ner_labels | \n", + "token_lengths | \n", + "sentence_length | \n", + "encoded | \n", + "
---|---|---|---|---|---|---|---|---|
0 | \n", + "[Không_khí, thật, náo_nhiệt, .] | \n", + "Không_khí thật náo_nhiệt . | \n", + "Không khí thật náo nhiệt . | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "[9, 4, 9, 1] | \n", + "4 | \n", + "[10591, 520, 13648, 5] | \n", + "
1 | \n", + "[Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... | \n", + "[3, 4, 2, 4, 2, 2, 1, 4, 4, 4, 3, 3, 4, 3, 4, ... | \n", + "31 | \n", + "[1108, 19703, 6, 28163, 40, 57, 4, 68, 414, 36... | \n", + "
2 | \n", + "[Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... | \n", + "Suy_tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "Suy tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... | \n", + "[8, 3, 1, 4, 3, 3, 4, 3, 2, 2, 4, 1, 3, 3, 1, ... | \n", + "33 | \n", + "[39659, 30554, 1997, 4, 1521, 1997, 182, 2777,... | \n", + "
3 | \n", + "[Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu_nướng gì ,... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu nướng gì ,... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... | \n", + "[3, 3, 3, 3, 3, 3, 2, 4, 9, 2, 1, 3, 3, 3, 3, ... | \n", + "43 | \n", + "[2042, 1218, 857, 60, 89, 602, 10, 55, 9880, 1... | \n", + "
4 | \n", + "[Nhật_ký, của, thuyền_viên, .] | \n", + "Nhật_ký của thuyền_viên . | \n", + "Nhật ký của thuyền viên . | \n", + "[0, 0, 0, 0] | \n", + "[O, O, O, O] | \n", + "[7, 3, 11, 1] | \n", + "4 | \n", + "[17188, 7, 6494, 5] | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
16853 | \n", + "[Nghe, thấy, đã, ghê_ghê, nhưng, Nhiêu, chưa, ... | \n", + "Nghe thấy đã ghê_ghê nhưng Nhiêu chưa được tườ... | \n", + "Nghe thấy đã ghê ghê nhưng Nhiêu chưa được tườ... | \n", + "[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, ... | \n", + "[O, O, O, O, O, B-PER, O, O, O, O, O, O, O, O,... | \n", + "[4, 4, 2, 7, 5, 5, 4, 4, 5, 1, 3, 3, 3, 4, 5, ... | \n", + "21 | \n", + "[3656, 108, 14, 3, 17143, 51, 24733, 102, 11, ... | \n", + "
16854 | \n", + "[Nhưng, mọi, chuyện, không, dừng, ở, đó, .] | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O] | \n", + "[5, 3, 6, 5, 4, 1, 2, 1] | \n", + "8 | \n", + "[293, 207, 344, 17, 772, 25, 37, 5] | \n", + "
16855 | \n", + "[Hoà, bảo, thời_gian, đầu, mặc_cảm, lắm, ,, ở,... | \n", + "Hoà bảo thời_gian đầu mặc_cảm lắm , ở trong nh... | \n", + "Hoà bảo thời gian đầu mặc cảm lắm , ở trong nh... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "[3, 3, 9, 3, 7, 3, 1, 1, 5, 3, 8, 2, 5, 4, 3, ... | \n", + "29 | \n", + "[2042, 1218, 130, 127, 11878, 957, 4, 25, 12, ... | \n", + "
16856 | \n", + "[Biết_bao, người, đã, tình_nguyện, hiến_dâng, ... | \n", + "Biết_bao người đã tình_nguyện hiến_dâng cả cuộ... | \n", + "Biết bao người đã tình nguyện hiến dâng cả cuộ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "[8, 5, 2, 11, 9, 2, 8, 4, 2, 3, 3, 7, 1, 5, 1] | \n", + "15 | \n", + "[53464, 18, 14, 4047, 46883, 94, 1679, 68, 90,... | \n", + "
16857 | \n", + "[Trên, đây, mới, là, “, thành_tích, ”, tiêu, t... | \n", + "Trên đây mới là “ thành_tích ” tiêu tiền của m... | \n", + "Trên đây mới là “ thành tích ” tiêu tiền của m... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "[4, 3, 3, 2, 1, 10, 1, 4, 4, 3, 7, 5, 2, 5, 9,... | \n", + "22 | \n", + "[880, 97, 60, 8, 556, 1417, 564, 2140, 123, 7,... | \n", + "
16858 rows × 8 columns
\n", + "\n", + " | tokens | \n", + "id | \n", + "seg_text | \n", + "raw_text | \n", + "labels | \n", + "
---|---|---|---|---|---|
0 | \n", + "[Không_khí, thật, náo_nhiệt, .] | \n", + "[0, 0, 0, 0] | \n", + "Không_khí thật náo_nhiệt . | \n", + "Không khí thật náo nhiệt . | \n", + "[O, O, O, O] | \n", + "
1 | \n", + "[Chị, Lãnh, và, Xăng, ra, đi, ,, mình, đứng, n... | \n", + "[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "Chị Lãnh và Xăng ra đi , mình đứng nhìn hai ch... | \n", + "[O, B-PER, O, B-PER, O, O, O, O, O, O, O, O, O... | \n", + "
2 | \n", + "[Suy_tính, mãi, ,, khóc, mãi, rồi, Phúc, lấy, ... | \n", + "[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Suy_tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "Suy tính mãi , khóc mãi rồi Phúc lấy ra tờ giấ... | \n", + "[O, O, O, O, O, O, B-PER, O, O, O, O, O, O, O,... | \n", + "
3 | \n", + "[Hoà, bảo, hồi, mới, qua, đâu, có, biết, nấu_n... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, ... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu_nướng gì ,... | \n", + "Hoà bảo hồi mới qua đâu có biết nấu nướng gì ,... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, B-... | \n", + "
4 | \n", + "[Nhật_ký, của, thuyền_viên, .] | \n", + "[0, 0, 0, 0] | \n", + "Nhật_ký của thuyền_viên . | \n", + "Nhật ký của thuyền viên . | \n", + "[O, O, O, O] | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
16853 | \n", + "[Nghe, thấy, đã, ghê_ghê, nhưng, Nhiêu, chưa, ... | \n", + "[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, ... | \n", + "Nghe thấy đã ghê_ghê nhưng Nhiêu chưa được tườ... | \n", + "Nghe thấy đã ghê ghê nhưng Nhiêu chưa được tườ... | \n", + "[O, O, O, O, O, B-PER, O, O, O, O, O, O, O, O,... | \n", + "
16854 | \n", + "[Nhưng, mọi, chuyện, không, dừng, ở, đó, .] | \n", + "[0, 0, 0, 0, 0, 0, 0, 0] | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "Nhưng mọi chuyện không dừng ở đó . | \n", + "[O, O, O, O, O, O, O, O] | \n", + "
16855 | \n", + "[Hoà, bảo, thời_gian, đầu, mặc_cảm, lắm, ,, ở,... | \n", + "[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Hoà bảo thời_gian đầu mặc_cảm lắm , ở trong nh... | \n", + "Hoà bảo thời gian đầu mặc cảm lắm , ở trong nh... | \n", + "[B-PER, O, O, O, O, O, O, O, O, O, O, O, O, O,... | \n", + "
16856 | \n", + "[Biết_bao, người, đã, tình_nguyện, hiến_dâng, ... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | \n", + "Biết_bao người đã tình_nguyện hiến_dâng cả cuộ... | \n", + "Biết bao người đã tình nguyện hiến dâng cả cuộ... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O] | \n", + "
16857 | \n", + "[Trên, đây, mới, là, “, thành_tích, ”, tiêu, t... | \n", + "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... | \n", + "Trên đây mới là “ thành_tích ” tiêu tiền của m... | \n", + "Trên đây mới là “ thành tích ” tiêu tiền của m... | \n", + "[O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, ... | \n", + "
16858 rows × 5 columns
\n", + "/content/wandb/run-20250610_121142-lmnb07kv
"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "