NguyenTuan-UET commited on
Commit ·
3a69ac8
1
Parent(s): 963890d
Initial commit: keyword-extraction-viet (models + vncorenlp via Git LFS)
Browse files- .gitattributes +8 -0
- .gitignore +4 -0
- .idea/.gitignore +3 -0
- .idea/inspectionProfiles/Project_Default.xml +38 -0
- .idea/inspectionProfiles/profiles_settings.xml +6 -0
- .idea/keyword-extraction-viet.iml +10 -0
- .idea/misc.xml +4 -0
- .idea/modules.xml +8 -0
- .idea/vcs.xml +6 -0
- README.md +109 -3
- app.py +70 -0
- keybertvi_model.py +72 -0
- model/keyword_extraction_utils.py +260 -0
- model/named_entities.py +43 -0
- model/process_text.py +104 -0
- pipeline.py +134 -0
- pretrained-models/ner-vietnamese-electra-base.pt +3 -0
- pretrained-models/phobert.pt +3 -0
- pretrained-models/vncorenlp/VnCoreNLP-1.2.jar +3 -0
- pretrained-models/vncorenlp/models/dep/vi-dep.xz +3 -0
- pretrained-models/vncorenlp/models/ner/vi-500brownclusters.xz +3 -0
- pretrained-models/vncorenlp/models/ner/vi-ner.xz +3 -0
- pretrained-models/vncorenlp/models/ner/vi-pretrainedembeddings.xz +3 -0
- pretrained-models/vncorenlp/models/postagger/vi-tagger +3 -0
- pretrained-models/vncorenlp/models/wordsegmenter/vi-vocab +3 -0
- pretrained-models/vncorenlp/models/wordsegmenter/wordsegmenter.rdr +3 -0
- requirements.txt +3 -0
- vietnamese-stopwords-dash.txt +1998 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,11 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
vncorenlp filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
pretrained-models/phobert.pt filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
pretrained-models/ner-vietnamese-electra-base.pt filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
pretrained-models/vncorenlp/models/postagger/vi-tagger filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
pretrained-models/vncorenlp/VnCoreNLP-1.2.jar filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
pretrained-models/*.pt filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
pretrained-models/vncorenlp/*.jar filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
pretrained-models/vncorenlp/models/** filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
venv
|
| 2 |
+
test_file.txt
|
| 3 |
+
scrap.py
|
| 4 |
+
|
.idea/.gitignore
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Default ignored files
|
| 2 |
+
/shelf/
|
| 3 |
+
/workspace.xml
|
.idea/inspectionProfiles/Project_Default.xml
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<component name="InspectionProjectProfileManager">
|
| 2 |
+
<profile version="1.0">
|
| 3 |
+
<option name="myName" value="Project Default" />
|
| 4 |
+
<inspection_tool class="PyChainedComparisonsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
| 5 |
+
<option name="ignoreConstantInTheMiddle" value="true" />
|
| 6 |
+
</inspection_tool>
|
| 7 |
+
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
| 8 |
+
<option name="ignoredPackages">
|
| 9 |
+
<value>
|
| 10 |
+
<list size="13">
|
| 11 |
+
<item index="0" class="java.lang.String" itemvalue="scikit-image" />
|
| 12 |
+
<item index="1" class="java.lang.String" itemvalue="scipy" />
|
| 13 |
+
<item index="2" class="java.lang.String" itemvalue="scikit-learn" />
|
| 14 |
+
<item index="3" class="java.lang.String" itemvalue="PyYAML" />
|
| 15 |
+
<item index="4" class="java.lang.String" itemvalue="python-dateutil" />
|
| 16 |
+
<item index="5" class="java.lang.String" itemvalue="torch" />
|
| 17 |
+
<item index="6" class="java.lang.String" itemvalue="numpy" />
|
| 18 |
+
<item index="7" class="java.lang.String" itemvalue="torchvision" />
|
| 19 |
+
<item index="8" class="java.lang.String" itemvalue="pandas" />
|
| 20 |
+
<item index="9" class="java.lang.String" itemvalue="tqdm" />
|
| 21 |
+
<item index="10" class="java.lang.String" itemvalue="imageio" />
|
| 22 |
+
<item index="11" class="java.lang.String" itemvalue="matplotlib" />
|
| 23 |
+
<item index="12" class="java.lang.String" itemvalue="pytz" />
|
| 24 |
+
</list>
|
| 25 |
+
</value>
|
| 26 |
+
</option>
|
| 27 |
+
</inspection_tool>
|
| 28 |
+
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
| 29 |
+
<option name="ignoredErrors">
|
| 30 |
+
<list>
|
| 31 |
+
<option value="N803" />
|
| 32 |
+
<option value="N806" />
|
| 33 |
+
<option value="N802" />
|
| 34 |
+
</list>
|
| 35 |
+
</option>
|
| 36 |
+
</inspection_tool>
|
| 37 |
+
</profile>
|
| 38 |
+
</component>
|
.idea/inspectionProfiles/profiles_settings.xml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<component name="InspectionProjectProfileManager">
|
| 2 |
+
<settings>
|
| 3 |
+
<option name="USE_PROJECT_PROFILE" value="false" />
|
| 4 |
+
<version value="1.0" />
|
| 5 |
+
</settings>
|
| 6 |
+
</component>
|
.idea/keyword-extraction-viet.iml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<module type="PYTHON_MODULE" version="4">
|
| 3 |
+
<component name="NewModuleRootManager">
|
| 4 |
+
<content url="file://$MODULE_DIR$">
|
| 5 |
+
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
| 6 |
+
</content>
|
| 7 |
+
<orderEntry type="inheritedJdk" />
|
| 8 |
+
<orderEntry type="sourceFolder" forTests="false" />
|
| 9 |
+
</component>
|
| 10 |
+
</module>
|
.idea/misc.xml
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11 (keyword-extraction-viet)" project-jdk-type="Python SDK" />
|
| 4 |
+
</project>
|
.idea/modules.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="ProjectModuleManager">
|
| 4 |
+
<modules>
|
| 5 |
+
<module fileurl="file://$PROJECT_DIR$/.idea/keyword-extraction-viet.iml" filepath="$PROJECT_DIR$/.idea/keyword-extraction-viet.iml" />
|
| 6 |
+
</modules>
|
| 7 |
+
</component>
|
| 8 |
+
</project>
|
.idea/vcs.xml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="VcsDirectoryMappings">
|
| 4 |
+
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
| 5 |
+
</component>
|
| 6 |
+
</project>
|
README.md
CHANGED
|
@@ -1,3 +1,109 @@
|
|
| 1 |
-
---
|
| 2 |
-
|
| 3 |
-
--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
tags:
|
| 3 |
+
- keyword-extraction
|
| 4 |
+
language:
|
| 5 |
+
- vi
|
| 6 |
+
---
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
# <a name="introduction"></a> KeyBERTVi - Keyword Extraction for Vietnamese language
|
| 10 |
+
|
| 11 |
+
Inspired by [KeyBERT](https://github.com/MaartenGr/KeyBERT), KeyBERTVi implements a similar keyword extraction technique that leverages the embeddings of [PhoBERT](https://huggingface.co/vinai/phobert-base) and minimal linguistics properties to extract keywords and keyphrases that are most similar to the document.
|
| 12 |
+
|
| 13 |
+
<a name="toc"/></a>
|
| 14 |
+
## Table of Contents
|
| 15 |
+
<!--ts-->
|
| 16 |
+
1. [About the Project](#about)
|
| 17 |
+
2. [Getting Started](#gettingstarted)
|
| 18 |
+
2.1. [Installation](#installation)
|
| 19 |
+
2.2. [Basic Usage](#usage)
|
| 20 |
+
2.3. [Diversify Results](#diversify)
|
| 21 |
+
3. [Limitations](#limitations)
|
| 22 |
+
<!--te-->
|
| 23 |
+
|
| 24 |
+
<a name="about"/></a>
|
| 25 |
+
## 1. About the Project
|
| 26 |
+
|
| 27 |
+
This implementation took inspiration from the simple yet intuitive and powerful method of [KeyBERT](https://github.com/MaartenGr/KeyBERT/), applied for the Vietnamese language. PhoBERT are used to generate both document-level embeddings and word-level embeddings for extracted N-grams. Cosine similarity is then used to compute which N-grams are most similar to the document-level embedding, thus can be perceived as most representative of the document.
|
| 28 |
+
Preprocessing catered to the Vietnamese language was applied.
|
| 29 |
+
|
| 30 |
+
Test with your own documents at [KeyBERTVi Space](https://huggingface.co/spaces/tpha4308/keybertvi-app).
|
| 31 |
+
|
| 32 |
+
<a name="gettingstarted"/></a>
|
| 33 |
+
## 2. Getting Started
|
| 34 |
+
<a name="installation"/></a>
|
| 35 |
+
### 2.1. Setting up
|
| 36 |
+
|
| 37 |
+
```bash
|
| 38 |
+
git clone https://huggingface.co/tpha4308/keyword-extraction-viet
|
| 39 |
+
```
|
| 40 |
+
|
| 41 |
+
You can use existing pre-trained models in the repo or download your own and put them in `pretrained-models` folder.
|
| 42 |
+
|
| 43 |
+
```python
|
| 44 |
+
phobert = AutoModel.from_pretrained("vinai/phobert-base-v2")
|
| 45 |
+
phobert.eval()
|
| 46 |
+
torch.save(phobert, f'{dir_path}/pretrained-models/phobert.pt')
|
| 47 |
+
|
| 48 |
+
ner_model = AutoModelForTokenClassification.from_pretrained("NlpHUST/ner-vietnamese-electra-base")
|
| 49 |
+
ner_model.eval()
|
| 50 |
+
torch.save(ner_model, f'{dir_path}/pretrained-models/ner-vietnamese-electra-base.pt')
|
| 51 |
+
```
|
| 52 |
+
|
| 53 |
+
**Note:** `dir_path` is the absolute path to the repo.
|
| 54 |
+
|
| 55 |
+
As [PhoBERT](https://huggingface.co/vinai/phobert-base) requires [VnCoreNLP](https://github.com/vncorenlp/VnCoreNLP) as part of pre-processing, the folder `pretrained-models/vncorenlp` is required. To download your own:
|
| 56 |
+
```bash
|
| 57 |
+
pip install py_vncorenlp
|
| 58 |
+
```
|
| 59 |
+
|
| 60 |
+
```python
|
| 61 |
+
import py_vncorenlp
|
| 62 |
+
|
| 63 |
+
py_vncorenlp.download_model(save_dir=f'{dir_path}/pretrained-models/vncorenlp')
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
<a name="usage"/></a>
|
| 67 |
+
### 2.2. Basic Usage
|
| 68 |
+
|
| 69 |
+
```python
|
| 70 |
+
phobert = torch.load(f'{dir_path}/pretrained-models/phobert.pt')
|
| 71 |
+
phobert.eval()
|
| 72 |
+
ner_model = torch.load(f'{dir_path}/pretrained-models/ner-vietnamese-electra-base.pt')
|
| 73 |
+
ner_model.eval()
|
| 74 |
+
kw_pipeline = KeywordExtractorPipeline(phobert, ner_model)
|
| 75 |
+
```
|
| 76 |
+
|
| 77 |
+
```python
|
| 78 |
+
title = "Truyền thuyết và hiện tại Thành Cổ Loa"
|
| 79 |
+
text = """
|
| 80 |
+
Nhắc đến Cổ Loa, người ta nghĩ ngay đến truyền thuyết về An Dương Vương được thần Kim Quy bày cho cách xây thành, về chiếc lẫy nỏ thần làm từ móng chân rùa thần và mối tình bi thương Mỵ Châu – Trọng Thủy. Đằng sau những câu chuyện thiên về tâm linh ấy, thế hệ con cháu còn khám phá được những giá trị khảo cổ to lớn của Cổ Loa.
|
| 81 |
+
Khu di tích Cổ Loa cách trung – tâm Hà Nội 17km thuộc huyện Đông Anh, Hà Nội, có diện tích bảo tồn gần 500ha được coi là địa chỉ văn hóa đặc biệt của thủ đô và cả nước. Cổ Loa có hàng loạt di chỉ khảo cổ học đã được phát hiện, phản ánh quá trình phát triển liên tục của dân tộc ta từ sơ khai qua các thời kỳ đồ đồng, đồ đá và đồ sắt mà đỉnh cao là văn hóa Đông Sơn, vẫn được coi là nền văn minh sông Hồng thời kỳ tiền sử của dân tộc Việt Nam.
|
| 82 |
+
Cổ Loa từng là kinh đô của nhà nước Âu Lạc thời kỳ An Dương Vương (thế kỷ III TCN) và của nước Đại Việt thời Ngô Quyền (thế kỷ X) mà thành Cổ Loa là một di tích minh chứng còn lại cho đến ngày nay. Thành Cổ Loa được các nhà khảo cổ học đánh giá là “tòa thành cổ nhất, quy mô lớn vào bậc nhất, cấu trúc cũng thuộc loại độc đáo nhất trong lịch sử xây dựng thành lũy của người Việt cổ”.
|
| 83 |
+
"""
|
| 84 |
+
inp = {"title": title, "text": text}
|
| 85 |
+
kws = kw_pipeline(inputs=inp, min_freq=1, ngram_n=(1, 3), top_n=5, diversify_result=False)
|
| 86 |
+
|
| 87 |
+
[('Khu di_tích Cổ_Loa', 0.88987315),
|
| 88 |
+
('Âu_Lạc thời_kỳ An_Dương_Vương', 0.8680505),
|
| 89 |
+
('thành Cổ_Loa', 0.8661723),
|
| 90 |
+
('hàng_loạt di_chỉ khảo_cổ_học', 0.8644231),
|
| 91 |
+
('lịch_sử xây_dựng thành_luỹ', 0.8375939)]
|
| 92 |
+
```
|
| 93 |
+
|
| 94 |
+
<a name="diversify"/></a>
|
| 95 |
+
### 2.3. Diversify Results
|
| 96 |
+
|
| 97 |
+
More information needed
|
| 98 |
+
|
| 99 |
+
<a name="limitations"/></a>
|
| 100 |
+
## 3. Limitations
|
| 101 |
+
|
| 102 |
+
More information needed
|
| 103 |
+
|
| 104 |
+
## References
|
| 105 |
+
1. https://github.com/MaartenGr/KeyBERT
|
| 106 |
+
2. https://github.com/VinAIResearch/PhoBERT
|
| 107 |
+
3. https://huggingface.co/NlpHUST/ner-vietnamese-electra-base
|
| 108 |
+
4. https://github.com/undertheseanlp/underthesea
|
| 109 |
+
5. https://github.com/vncorenlp/VnCoreNLP
|
app.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
import torch
|
| 3 |
+
import os
|
| 4 |
+
|
| 5 |
+
from pipeline import KeywordExtractorPipeline
|
| 6 |
+
|
| 7 |
+
DIR_PATH = os.path.dirname(os.path.realpath(__file__))
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
def extract_keyword(title, text, top_n, ngram_low_range, ngram_high_range, min_freq, diversify_result):
|
| 11 |
+
inp = {"text": text, "title": title}
|
| 12 |
+
keyword_ls = kw_pipeline(inputs=inp, min_freq=min_freq, ngram_n=(ngram_low_range, ngram_high_range),
|
| 13 |
+
top_n=top_n, diversify_result=diversify_result)
|
| 14 |
+
result = ''
|
| 15 |
+
for kw, score in keyword_ls:
|
| 16 |
+
result += f'{kw}: {score}\n'
|
| 17 |
+
return result
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
if gr.NO_RELOAD:
|
| 21 |
+
print("Loading PhoBERT model")
|
| 22 |
+
phobert = torch.load(f'{DIR_PATH}/pretrained-models/phobert.pt')
|
| 23 |
+
phobert.eval()
|
| 24 |
+
|
| 25 |
+
print("Loading NER model")
|
| 26 |
+
ner_model = torch.load(f'{DIR_PATH}/pretrained-models/ner-vietnamese-electra-base.pt')
|
| 27 |
+
ner_model.eval()
|
| 28 |
+
kw_pipeline = KeywordExtractorPipeline(phobert, ner_model)
|
| 29 |
+
|
| 30 |
+
if __name__ == "__main__":
|
| 31 |
+
demo = gr.Interface(fn=extract_keyword,
|
| 32 |
+
inputs=[
|
| 33 |
+
gr.Text(
|
| 34 |
+
label="Title",
|
| 35 |
+
lines=1,
|
| 36 |
+
value="Enter title here",
|
| 37 |
+
),
|
| 38 |
+
gr.Textbox(
|
| 39 |
+
label="Text",
|
| 40 |
+
lines=5,
|
| 41 |
+
value="Enter text here",
|
| 42 |
+
),
|
| 43 |
+
gr.Number(
|
| 44 |
+
label="Top N keywords",
|
| 45 |
+
info="Number of keywords retrieved",
|
| 46 |
+
value=10
|
| 47 |
+
),
|
| 48 |
+
gr.Number(
|
| 49 |
+
label="Ngram low range",
|
| 50 |
+
value=1
|
| 51 |
+
),
|
| 52 |
+
gr.Number(
|
| 53 |
+
label="Ngram high range",
|
| 54 |
+
value=3
|
| 55 |
+
),
|
| 56 |
+
gr.Number(
|
| 57 |
+
label="Ngram minimum frequency",
|
| 58 |
+
value=1
|
| 59 |
+
),
|
| 60 |
+
gr.Checkbox(
|
| 61 |
+
label="Diversify result"
|
| 62 |
+
)
|
| 63 |
+
],
|
| 64 |
+
# inputs=["text", "textbox", "number", "number", "number", "number", "checkbox"],
|
| 65 |
+
outputs=gr.Textbox(
|
| 66 |
+
label="Keywords Extracted",
|
| 67 |
+
)
|
| 68 |
+
)
|
| 69 |
+
|
| 70 |
+
demo.launch(share=True) # Share your demo with just 1 extra parameter 🚀
|
keybertvi_model.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# import py_vncorenlp
|
| 2 |
+
# from transformers import AutoTokenizer, pipeline
|
| 3 |
+
# import torch
|
| 4 |
+
# import os
|
| 5 |
+
# from model.keyword_extraction_utils import extract_keywords
|
| 6 |
+
#
|
| 7 |
+
#
|
| 8 |
+
# class KeyBERTVi:
|
| 9 |
+
#
|
| 10 |
+
# def __init__(self, stopwords_file_path=None):
|
| 11 |
+
# self.annotator = py_vncorenlp.VnCoreNLP(annotators=["wseg", "pos"],
|
| 12 |
+
# save_dir=f'{dir_path}/pretrained-models/vncorenlp')
|
| 13 |
+
# # model = py_vncorenlp.VnCoreNLP(save_dir='/absolute/path/to/vncorenlp')
|
| 14 |
+
# print("Loading PhoBERT model")
|
| 15 |
+
# self.phobert_tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base-v2")
|
| 16 |
+
#
|
| 17 |
+
# # use absolute path because torch is cached
|
| 18 |
+
# self.phobert = torch.load(f'{dir_path}/pretrained-models/phobert.pt')
|
| 19 |
+
# self.phobert.eval()
|
| 20 |
+
#
|
| 21 |
+
# print("Loading NER model")
|
| 22 |
+
# ner_tokenizer = AutoTokenizer.from_pretrained("NlpHUST/ner-vietnamese-electra-base")
|
| 23 |
+
# ner_model = torch.load(f'{dir_path}/pretrained-models/ner-vietnamese-electra-base.pt')
|
| 24 |
+
# ner_model.eval()
|
| 25 |
+
# self.ner_pipeline = pipeline("ner", model=ner_model, tokenizer=ner_tokenizer)
|
| 26 |
+
#
|
| 27 |
+
# if stopwords_file_path is None:
|
| 28 |
+
# stopwords_file_path = f'{dir_path}/vietnamese-stopwords-dash.txt'
|
| 29 |
+
# with open(stopwords_file_path) as f:
|
| 30 |
+
# self.stopwords = [w.strip() for w in f.readlines()]
|
| 31 |
+
#
|
| 32 |
+
# def extract_keywords(self, title, text, ngram_range=(1, 3), top_n=5, use_kmeans=False, use_mmr=False, min_freq=1):
|
| 33 |
+
# keyword_ls = extract_keywords(text, title,
|
| 34 |
+
# self.ner_pipeline,
|
| 35 |
+
# self.annotator,
|
| 36 |
+
# self.phobert_tokenizer,
|
| 37 |
+
# self.phobert,
|
| 38 |
+
# self.stopwords,
|
| 39 |
+
# ngram_n=ngram_range,
|
| 40 |
+
# top_n=top_n,
|
| 41 |
+
# use_kmeans=use_kmeans,
|
| 42 |
+
# use_mmr=use_mmr,
|
| 43 |
+
# min_freq=min_freq)
|
| 44 |
+
# return keyword_ls
|
| 45 |
+
#
|
| 46 |
+
# def highlight(self, text, keywords):
|
| 47 |
+
# kw_ls = [' '.join(kw.split('_')) for kw, score in keywords]
|
| 48 |
+
# for key in kw_ls:
|
| 49 |
+
# text = text.replace(f" {key}", f" <mark>{key}</mark>")
|
| 50 |
+
# return text
|
| 51 |
+
#
|
| 52 |
+
#
|
| 53 |
+
# dir_path = os.path.dirname(os.path.realpath(__file__))
|
| 54 |
+
# if __name__ == "__main__":
|
| 55 |
+
# # args
|
| 56 |
+
# # print(dir_path)
|
| 57 |
+
#
|
| 58 |
+
# stopwords_file_path = f'{dir_path}/vietnamese-stopwords-dash.txt'
|
| 59 |
+
#
|
| 60 |
+
# # text_file_path = sys.argv[1]
|
| 61 |
+
# # with open(f'{dir_path}/{text_file_path}', 'r') as f:
|
| 62 |
+
# # text = ' '.join([ln.strip() for ln in f.readlines()])
|
| 63 |
+
# # print(text)
|
| 64 |
+
#
|
| 65 |
+
# # kw_model = KeyBERTVi()
|
| 66 |
+
# # model_name_on_hub = "KeyBERTVi"
|
| 67 |
+
# # kw_model.save_pretrained(model_name_on_hub)
|
| 68 |
+
# # kw_model.phobert_tokenizer.save_pretrained(model_name_on_hub)
|
| 69 |
+
#
|
| 70 |
+
# # title = None
|
| 71 |
+
# # keyword_ls = kw_model.extract_keywords(title, text, ngram_range=(1, 3), top_n=5)
|
| 72 |
+
# # print(keyword_ls)
|
model/keyword_extraction_utils.py
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from string import punctuation
|
| 2 |
+
import numpy as np
|
| 3 |
+
import torch
|
| 4 |
+
from sklearn.cluster import KMeans
|
| 5 |
+
from model.named_entities import get_named_entities
|
| 6 |
+
|
| 7 |
+
punctuation = [c for c in punctuation if c != "_"]
|
| 8 |
+
punctuation += ["“", "–", ",", "…", "”", "–"]
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
ethnicity_dict_map = {"H'Mông": "HMông",
|
| 12 |
+
"H'mông": "HMông",
|
| 13 |
+
"H’mông": "HMông",
|
| 14 |
+
"H’Mông": "HMông",
|
| 15 |
+
"H’MÔNG": "HMông",
|
| 16 |
+
"M'Nông": "MNông",
|
| 17 |
+
"M'nông": "MNông",
|
| 18 |
+
"M'NÔNG": "MNông",
|
| 19 |
+
"M’Nông": "MNông",
|
| 20 |
+
"M’NÔNG": "MNông",
|
| 21 |
+
"K’Ho": "KHo",
|
| 22 |
+
"K’Mẻo": "KMẻo"}
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def sub_sentence(sentence):
|
| 26 |
+
sent = []
|
| 27 |
+
|
| 28 |
+
start_index = 0
|
| 29 |
+
while start_index < len(sentence):
|
| 30 |
+
idx_list = []
|
| 31 |
+
for p in punctuation:
|
| 32 |
+
idx = sentence.find(p, start_index)
|
| 33 |
+
if idx != -1:
|
| 34 |
+
idx_list.append(idx)
|
| 35 |
+
|
| 36 |
+
if len(idx_list) == 0:
|
| 37 |
+
sent.append(sentence[start_index:].strip())
|
| 38 |
+
break
|
| 39 |
+
|
| 40 |
+
end_index = min(idx_list)
|
| 41 |
+
|
| 42 |
+
subsent = sentence[start_index:end_index].strip()
|
| 43 |
+
if len(subsent) > 0:
|
| 44 |
+
sent.append(subsent)
|
| 45 |
+
|
| 46 |
+
start_index = end_index + 1
|
| 47 |
+
|
| 48 |
+
return sent
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
def check_for_stopwords(ngram, stopwords_ls):
|
| 52 |
+
for ngram_elem in ngram.split():
|
| 53 |
+
for w in stopwords_ls:
|
| 54 |
+
if ngram_elem == w: # or ngram_elem.lower() == w:
|
| 55 |
+
return True
|
| 56 |
+
return False
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
def compute_ngram_list(segmentised_doc, ngram_n, stopwords_ls, subsentences=True):
|
| 60 |
+
if subsentences:
|
| 61 |
+
output_sub_sentences = []
|
| 62 |
+
for sentence in segmentised_doc:
|
| 63 |
+
output_sub_sentences += sub_sentence(sentence)
|
| 64 |
+
else:
|
| 65 |
+
output_sub_sentences = segmentised_doc
|
| 66 |
+
|
| 67 |
+
ngram_list = []
|
| 68 |
+
for sentence in output_sub_sentences:
|
| 69 |
+
sent = sentence.split()
|
| 70 |
+
for i in range(len(sent) - ngram_n + 1):
|
| 71 |
+
ngram = ' '.join(sent[i:i + ngram_n])
|
| 72 |
+
if ngram not in ngram_list and not check_for_stopwords(ngram, stopwords_ls):
|
| 73 |
+
ngram_list.append(ngram)
|
| 74 |
+
|
| 75 |
+
final_ngram_list = []
|
| 76 |
+
for ngram in ngram_list:
|
| 77 |
+
contains_number = False
|
| 78 |
+
for char in ngram:
|
| 79 |
+
if char.isnumeric():
|
| 80 |
+
contains_number = True
|
| 81 |
+
break
|
| 82 |
+
if not contains_number:
|
| 83 |
+
final_ngram_list.append(ngram)
|
| 84 |
+
|
| 85 |
+
return final_ngram_list
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
def cosine_similarity(a, b):
|
| 89 |
+
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
|
| 90 |
+
|
| 91 |
+
|
| 92 |
+
def get_doc_embeddings(segmentised_doc, tokenizer, phobert, stopwords):
|
| 93 |
+
doc_embedding = torch.zeros(size=(len(segmentised_doc), 768))
|
| 94 |
+
|
| 95 |
+
for i, sentence in enumerate(segmentised_doc):
|
| 96 |
+
sent_removed_stopwords = ' '.join([word for word in sentence.split() if word not in stopwords])
|
| 97 |
+
|
| 98 |
+
sentence_embedding = tokenizer.encode(sent_removed_stopwords)
|
| 99 |
+
input_ids = torch.tensor([sentence_embedding])
|
| 100 |
+
with torch.no_grad():
|
| 101 |
+
features = phobert(input_ids)
|
| 102 |
+
|
| 103 |
+
if i == 0:
|
| 104 |
+
doc_embedding[i, :] = 2 * features.pooler_output.flatten()
|
| 105 |
+
else:
|
| 106 |
+
doc_embedding[i, :] = features.pooler_output.flatten()
|
| 107 |
+
|
| 108 |
+
return torch.mean(doc_embedding, axis=0)
|
| 109 |
+
|
| 110 |
+
|
| 111 |
+
def get_segmentised_doc(nlp, rdrsegmenter, title, doc):
|
| 112 |
+
for i, j in ethnicity_dict_map.items():
|
| 113 |
+
if title is not None:
|
| 114 |
+
title = title.replace(i, j)
|
| 115 |
+
doc = doc.replace(i, j)
|
| 116 |
+
|
| 117 |
+
segmentised_doc = rdrsegmenter.word_segment(doc)
|
| 118 |
+
|
| 119 |
+
if title is not None:
|
| 120 |
+
segmentised_doc = rdrsegmenter.word_segment(title) + rdrsegmenter.word_segment(doc)
|
| 121 |
+
ne_ls = set(get_named_entities(nlp, doc))
|
| 122 |
+
|
| 123 |
+
segmentised_doc_ne = []
|
| 124 |
+
for sent in segmentised_doc:
|
| 125 |
+
for ne in ne_ls:
|
| 126 |
+
sent = sent.replace(ne, '_'.join(ne.split()))
|
| 127 |
+
segmentised_doc_ne.append(sent)
|
| 128 |
+
return ne_ls, segmentised_doc_ne
|
| 129 |
+
|
| 130 |
+
|
| 131 |
+
def compute_ngram_embeddings(tokenizer, phobert, ngram_list):
|
| 132 |
+
ngram_embeddings = {}
|
| 133 |
+
|
| 134 |
+
for ngram in ngram_list:
|
| 135 |
+
ngram_copy = ngram
|
| 136 |
+
if ngram.isupper():
|
| 137 |
+
ngram_copy = ngram.lower()
|
| 138 |
+
word_embedding = tokenizer.encode(ngram_copy)
|
| 139 |
+
input_ids = torch.tensor([word_embedding])
|
| 140 |
+
with torch.no_grad():
|
| 141 |
+
word_features = phobert(input_ids)
|
| 142 |
+
|
| 143 |
+
ngram_embeddings[ngram] = word_features.pooler_output
|
| 144 |
+
return ngram_embeddings
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
def compute_ngram_similarity(ngram_list, ngram_embeddings, doc_embedding):
|
| 148 |
+
ngram_similarity_dict = {}
|
| 149 |
+
|
| 150 |
+
for ngram in ngram_list:
|
| 151 |
+
similarity_score = cosine_similarity(ngram_embeddings[ngram], doc_embedding.T).flatten()[0]
|
| 152 |
+
# similarity_score = normalised_cosine_similarity(ngram_embeddings[ngram], doc_embedding.T).flatten()[0]
|
| 153 |
+
ngram_similarity_dict[ngram] = similarity_score
|
| 154 |
+
|
| 155 |
+
return ngram_similarity_dict
|
| 156 |
+
|
| 157 |
+
|
| 158 |
+
def diversify_result_kmeans(ngram_result, ngram_embeddings, top_n=5):
|
| 159 |
+
best_ngrams = sorted(ngram_result, key=ngram_result.get, reverse=True)[:top_n * 4]
|
| 160 |
+
best_ngram_embeddings = np.array([ngram_embeddings[ngram] for ngram in best_ngrams]).squeeze()
|
| 161 |
+
vote = {}
|
| 162 |
+
|
| 163 |
+
for niter in range(100):
|
| 164 |
+
kmeans = KMeans(n_clusters=top_n, init='k-means++', random_state=niter * 2, n_init="auto").fit(
|
| 165 |
+
best_ngram_embeddings)
|
| 166 |
+
kmeans_result = kmeans.labels_
|
| 167 |
+
|
| 168 |
+
res = {}
|
| 169 |
+
for i in range(len(kmeans_result)):
|
| 170 |
+
if kmeans_result[i] not in res:
|
| 171 |
+
res[kmeans_result[i]] = []
|
| 172 |
+
res[kmeans_result[i]].append((best_ngrams[i], ngram_result[best_ngrams[i]]))
|
| 173 |
+
|
| 174 |
+
final_result = [res[k][0] for k in res]
|
| 175 |
+
for keyword in final_result:
|
| 176 |
+
if keyword not in vote:
|
| 177 |
+
vote[keyword] = 0
|
| 178 |
+
vote[keyword] += 1
|
| 179 |
+
|
| 180 |
+
diversify_result_ls = sorted(vote, key=vote.get, reverse=True)
|
| 181 |
+
|
| 182 |
+
return diversify_result_ls[:top_n]
|
| 183 |
+
|
| 184 |
+
|
| 185 |
+
def remove_duplicates(ngram_result):
|
| 186 |
+
to_remove = set()
|
| 187 |
+
for ngram in ngram_result:
|
| 188 |
+
|
| 189 |
+
for ngram2 in ngram_result:
|
| 190 |
+
if ngram not in to_remove and ngram != ngram2 and ngram.lower() == ngram2.lower():
|
| 191 |
+
new_score = np.mean([ngram_result[ngram], ngram_result[ngram2]])
|
| 192 |
+
|
| 193 |
+
ngram_result[ngram] = new_score
|
| 194 |
+
to_remove.add(ngram2)
|
| 195 |
+
|
| 196 |
+
for ngram in to_remove:
|
| 197 |
+
ngram_result.pop(ngram)
|
| 198 |
+
return ngram_result
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
def compute_filtered_text(annotator, title, text):
|
| 202 |
+
annotated = annotator.annotate_text(text)
|
| 203 |
+
if title is not None:
|
| 204 |
+
annotated = annotator.annotate_text(title + '. ' + text)
|
| 205 |
+
filtered_sentences = []
|
| 206 |
+
keep_tags = ['N', 'Np', 'V', 'Nc']
|
| 207 |
+
for key in annotated.keys():
|
| 208 |
+
# print(key,annotated[key])
|
| 209 |
+
sent = ' '.join([dict_['wordForm'] for dict_ in annotated[key] if dict_['posTag'] in keep_tags])
|
| 210 |
+
filtered_sentences.append(sent)
|
| 211 |
+
return filtered_sentences
|
| 212 |
+
|
| 213 |
+
|
| 214 |
+
def get_candidate_ngrams(segmentised_doc, filtered_segmentised_doc, ngram_n, stopwords_ls):
|
| 215 |
+
# get actual ngrams
|
| 216 |
+
actual_ngram_list = compute_ngram_list(segmentised_doc, ngram_n, stopwords_ls, subsentences=True)
|
| 217 |
+
|
| 218 |
+
# get filtered ngrams
|
| 219 |
+
filtered_ngram_list = compute_ngram_list(filtered_segmentised_doc, ngram_n, stopwords_ls,
|
| 220 |
+
subsentences=False)
|
| 221 |
+
|
| 222 |
+
# get candiate ngrams
|
| 223 |
+
candidate_ngram = [ngram for ngram in filtered_ngram_list if ngram in actual_ngram_list]
|
| 224 |
+
return candidate_ngram
|
| 225 |
+
|
| 226 |
+
|
| 227 |
+
def limit_minimum_frequency(doc_segmentised, ngram_list, min_freq=1):
|
| 228 |
+
ngram_dict_freq = {}
|
| 229 |
+
for ngram in ngram_list:
|
| 230 |
+
ngram_n = len(ngram.split())
|
| 231 |
+
count = 0
|
| 232 |
+
for sentence in doc_segmentised:
|
| 233 |
+
sent = sentence.split()
|
| 234 |
+
# print(sent)
|
| 235 |
+
for i in range(len(sent) - ngram_n + 1):
|
| 236 |
+
pair = ' '.join(sent[i:i + ngram_n])
|
| 237 |
+
# print(pair, ngram)
|
| 238 |
+
if pair == ngram:
|
| 239 |
+
count += 1
|
| 240 |
+
# print(ngram, count)
|
| 241 |
+
if count >= min_freq:
|
| 242 |
+
ngram_dict_freq[ngram] = count
|
| 243 |
+
|
| 244 |
+
return ngram_dict_freq
|
| 245 |
+
|
| 246 |
+
|
| 247 |
+
def remove_overlapping_ngrams(ngram_list):
|
| 248 |
+
to_remove = set()
|
| 249 |
+
for ngram1 in ngram_list:
|
| 250 |
+
for ngram2 in ngram_list:
|
| 251 |
+
if len(ngram1.split()) > len(ngram2.split()) and (ngram1.startswith(ngram2) or ngram1.endswith(ngram2)):
|
| 252 |
+
# print(ngram1, ngram2)
|
| 253 |
+
# print()
|
| 254 |
+
to_remove.add(ngram2)
|
| 255 |
+
|
| 256 |
+
# print("To removed")
|
| 257 |
+
# print(to_remove)
|
| 258 |
+
for kw in to_remove:
|
| 259 |
+
ngram_list.remove(kw)
|
| 260 |
+
return ngram_list
|
model/named_entities.py
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from underthesea import sent_tokenize
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
def substring(w, ls):
|
| 5 |
+
for w2 in ls:
|
| 6 |
+
if w != w2 and w in w2:
|
| 7 |
+
return True
|
| 8 |
+
return False
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
def get_ner_phrases(sent_ner_result):
|
| 12 |
+
ner_list = []
|
| 13 |
+
current_ner = [sent_ner_result[0]["word"]]
|
| 14 |
+
current_idx = sent_ner_result[0]["index"]
|
| 15 |
+
for i in range(1, len(sent_ner_result)):
|
| 16 |
+
if sent_ner_result[i]["index"] == current_idx + 1:
|
| 17 |
+
current_ner.append(sent_ner_result[i]["word"])
|
| 18 |
+
else:
|
| 19 |
+
ner_list.append((' '.join(current_ner), sent_ner_result[i - 1]['entity']))
|
| 20 |
+
current_ner = [sent_ner_result[i]["word"]]
|
| 21 |
+
|
| 22 |
+
current_idx = sent_ner_result[i]["index"]
|
| 23 |
+
|
| 24 |
+
ner_list.append((' '.join(current_ner), sent_ner_result[len(sent_ner_result) - 1]['entity']))
|
| 25 |
+
return ner_list
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def get_named_entities(nlp, doc):
|
| 29 |
+
ner_lists = []
|
| 30 |
+
for sent in sent_tokenize(doc):
|
| 31 |
+
sent_ner_result = nlp(sent)
|
| 32 |
+
if len(sent_ner_result) > 0:
|
| 33 |
+
ner_lists += get_ner_phrases(sent_ner_result)
|
| 34 |
+
|
| 35 |
+
# print(ner_lists)
|
| 36 |
+
|
| 37 |
+
ner_list_non_dup = []
|
| 38 |
+
for (entity, ner_type) in ner_lists:
|
| 39 |
+
if entity not in ner_list_non_dup and ner_type.startswith('I'):
|
| 40 |
+
ner_list_non_dup.append(entity)
|
| 41 |
+
|
| 42 |
+
ner_list_final = [w.replace(" ##", "") for w in ner_list_non_dup if not substring(w, ner_list_non_dup)]
|
| 43 |
+
return ner_list_final
|
model/process_text.py
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from string import punctuation
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
def process_text_pipeline(text):
|
| 5 |
+
full_text_processed = replace_all(text.strip())
|
| 6 |
+
|
| 7 |
+
while '\n\n' in full_text_processed:
|
| 8 |
+
full_text_processed = full_text_processed.replace('\n\n', '\n')
|
| 9 |
+
|
| 10 |
+
full_text_processed = process_sticking_sentences(full_text_processed)
|
| 11 |
+
|
| 12 |
+
while ' ' in full_text_processed:
|
| 13 |
+
full_text_processed = full_text_processed.replace(' ', ' ')
|
| 14 |
+
return full_text_processed
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def replace_all(text):
|
| 18 |
+
dict_map = {
|
| 19 |
+
"òa": "oà",
|
| 20 |
+
"Òa": "Oà",
|
| 21 |
+
"ÒA": "OÀ",
|
| 22 |
+
"óa": "oá",
|
| 23 |
+
"Óa": "Oá",
|
| 24 |
+
"ÓA": "OÁ",
|
| 25 |
+
"ỏa": "oả",
|
| 26 |
+
"Ỏa": "Oả",
|
| 27 |
+
"ỎA": "OẢ",
|
| 28 |
+
"õa": "oã",
|
| 29 |
+
"Õa": "Oã",
|
| 30 |
+
"ÕA": "OÃ",
|
| 31 |
+
"ọa": "oạ",
|
| 32 |
+
"Ọa": "Oạ",
|
| 33 |
+
"ỌA": "OẠ",
|
| 34 |
+
"òe": "oè",
|
| 35 |
+
"Òe": "Oè",
|
| 36 |
+
"ÒE": "OÈ",
|
| 37 |
+
"óe": "oé",
|
| 38 |
+
"Óe": "Oé",
|
| 39 |
+
"ÓE": "OÉ",
|
| 40 |
+
"ỏe": "oẻ",
|
| 41 |
+
"Ỏe": "Oẻ",
|
| 42 |
+
"ỎE": "OẺ",
|
| 43 |
+
"õe": "oẽ",
|
| 44 |
+
"Õe": "Oẽ",
|
| 45 |
+
"ÕE": "OẼ",
|
| 46 |
+
"ọe": "oẹ",
|
| 47 |
+
"Ọe": "Oẹ",
|
| 48 |
+
"ỌE": "OẸ",
|
| 49 |
+
"ùy": "uỳ",
|
| 50 |
+
"Ùy": "Uỳ",
|
| 51 |
+
"ÙY": "UỲ",
|
| 52 |
+
"úy": "uý",
|
| 53 |
+
"Úy": "Uý",
|
| 54 |
+
"ÚY": "UÝ",
|
| 55 |
+
"ủy": "uỷ",
|
| 56 |
+
"Ủy": "Uỷ",
|
| 57 |
+
"ỦY": "UỶ",
|
| 58 |
+
"ũy": "uỹ",
|
| 59 |
+
"Ũy": "Uỹ",
|
| 60 |
+
"ŨY": "UỸ",
|
| 61 |
+
"ụy": "uỵ",
|
| 62 |
+
"Ụy": "Uỵ",
|
| 63 |
+
"ỤY": "UỴ",
|
| 64 |
+
"\xa0": " ",
|
| 65 |
+
"…": "...",
|
| 66 |
+
"''": '"',
|
| 67 |
+
""": '"',
|
| 68 |
+
"'": "'",
|
| 69 |
+
"H'Mông": "Hmông",
|
| 70 |
+
"H'mông": "Hmông",
|
| 71 |
+
"H’mông": "Hmông",
|
| 72 |
+
"H’Mông": "Hmông",
|
| 73 |
+
"H’MÔNG": "Hmông",
|
| 74 |
+
"M'Nông": "Mnông",
|
| 75 |
+
"M'nông": "Mnông",
|
| 76 |
+
"M'NÔNG": "Mnông",
|
| 77 |
+
"M’Nông": "Mnông",
|
| 78 |
+
"M’NÔNG": "Mnông",
|
| 79 |
+
'\u200b\u200b': ""
|
| 80 |
+
}
|
| 81 |
+
for i, j in dict_map.items():
|
| 82 |
+
text = text.replace(i, j)
|
| 83 |
+
return text
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
def process_sticking_sentences(full_text):
|
| 87 |
+
for i in range(len(full_text) - 1):
|
| 88 |
+
c1 = full_text[i]
|
| 89 |
+
c2 = full_text[i + 1]
|
| 90 |
+
|
| 91 |
+
# 'end of sentence.Start'
|
| 92 |
+
if c1 in punctuation and c2.isalpha() and c2.isupper():
|
| 93 |
+
before = full_text[:i + 1]
|
| 94 |
+
after = full_text[i + 1:]
|
| 95 |
+
|
| 96 |
+
full_text = before + " " + after
|
| 97 |
+
|
| 98 |
+
# 'end of sentenceStart'
|
| 99 |
+
if c1.isalpha() and c1.islower() and c2.isalpha() and c2.isupper():
|
| 100 |
+
before = full_text[:i + 1]
|
| 101 |
+
after = full_text[i + 1:]
|
| 102 |
+
|
| 103 |
+
full_text = before + ". " + after
|
| 104 |
+
return full_text
|
pipeline.py
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import py_vncorenlp
|
| 2 |
+
from transformers import AutoTokenizer, Pipeline, pipeline
|
| 3 |
+
import os
|
| 4 |
+
|
| 5 |
+
from model.keyword_extraction_utils import *
|
| 6 |
+
from model.process_text import process_text_pipeline
|
| 7 |
+
|
| 8 |
+
dir_path = os.path.dirname(os.path.realpath(__file__))
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
class KeywordExtractorPipeline(Pipeline):
|
| 12 |
+
def __init__(self, model, ner_model, **kwargs):
|
| 13 |
+
super().__init__(model, **kwargs)
|
| 14 |
+
self.annotator = py_vncorenlp.VnCoreNLP(annotators=["wseg", "pos"],
|
| 15 |
+
save_dir=f'{dir_path}/pretrained-models/vncorenlp')
|
| 16 |
+
|
| 17 |
+
print("Loading PhoBERT tokenizer")
|
| 18 |
+
self.phobert_tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base-v2")
|
| 19 |
+
self.phobert = model
|
| 20 |
+
|
| 21 |
+
print("Loading NER tokenizer")
|
| 22 |
+
ner_tokenizer = AutoTokenizer.from_pretrained("NlpHUST/ner-vietnamese-electra-base")
|
| 23 |
+
self.ner_pipeline = pipeline("ner", model=ner_model, tokenizer=ner_tokenizer)
|
| 24 |
+
|
| 25 |
+
stopwords_file_path = f'{dir_path}/vietnamese-stopwords-dash.txt'
|
| 26 |
+
with open(stopwords_file_path) as f:
|
| 27 |
+
self.stopwords = [w.strip() for w in f.readlines()]
|
| 28 |
+
|
| 29 |
+
def _sanitize_parameters(self, **kwargs):
|
| 30 |
+
preprocess_kwargs = {}
|
| 31 |
+
forward_kwargs = {}
|
| 32 |
+
postprocess_kwargs = {}
|
| 33 |
+
|
| 34 |
+
for possible_preprocess_kwarg in ["text", "title"]:
|
| 35 |
+
if possible_preprocess_kwarg in kwargs:
|
| 36 |
+
preprocess_kwargs[possible_preprocess_kwarg] = kwargs[possible_preprocess_kwarg]
|
| 37 |
+
|
| 38 |
+
for possible_forward_kwarg in ["ngram_n", "min_freq"]:
|
| 39 |
+
if possible_forward_kwarg in kwargs:
|
| 40 |
+
forward_kwargs[possible_forward_kwarg] = kwargs[possible_forward_kwarg]
|
| 41 |
+
|
| 42 |
+
for possible_postprocess_kwarg in ["top_n", "diversify_result"]:
|
| 43 |
+
if possible_postprocess_kwarg in kwargs:
|
| 44 |
+
postprocess_kwargs[possible_postprocess_kwarg] = kwargs[possible_postprocess_kwarg]
|
| 45 |
+
|
| 46 |
+
return preprocess_kwargs, forward_kwargs, postprocess_kwargs
|
| 47 |
+
|
| 48 |
+
def preprocess(self, inputs):
|
| 49 |
+
title = None
|
| 50 |
+
if inputs['title']:
|
| 51 |
+
title = process_text_pipeline(inputs['title'])
|
| 52 |
+
text = process_text_pipeline(inputs['text'])
|
| 53 |
+
return {"text": text, "title": title}
|
| 54 |
+
|
| 55 |
+
def _forward(self, model_inputs, ngram_n, min_freq):
|
| 56 |
+
text = model_inputs['text']
|
| 57 |
+
title = model_inputs['title']
|
| 58 |
+
|
| 59 |
+
# Getting segmentised document
|
| 60 |
+
ne_ls, doc_segmentised = get_segmentised_doc(self.ner_pipeline, self.annotator, title, text)
|
| 61 |
+
filtered_doc_segmentised = compute_filtered_text(self.annotator, title, text)
|
| 62 |
+
|
| 63 |
+
doc_embedding = get_doc_embeddings(filtered_doc_segmentised, self.phobert_tokenizer, self.phobert,
|
| 64 |
+
self.stopwords)
|
| 65 |
+
|
| 66 |
+
ngram_list = self.generate_ngram_list(doc_segmentised, filtered_doc_segmentised, ne_ls, ngram_n, min_freq)
|
| 67 |
+
print("Final ngram list")
|
| 68 |
+
print(sorted(ngram_list))
|
| 69 |
+
|
| 70 |
+
ngram_embeddings = compute_ngram_embeddings(self.phobert_tokenizer, self.phobert, ngram_list)
|
| 71 |
+
|
| 72 |
+
return {"ngram_list": ngram_list, "ngram_embeddings": ngram_embeddings, "doc_embedding": doc_embedding}
|
| 73 |
+
|
| 74 |
+
def postprocess(self, model_outputs, top_n, diversify_result):
|
| 75 |
+
ngram_list = model_outputs['ngram_list']
|
| 76 |
+
ngram_embeddings = model_outputs['ngram_embeddings']
|
| 77 |
+
doc_embedding = model_outputs['doc_embedding']
|
| 78 |
+
|
| 79 |
+
ngram_result = self.extract_keywords(doc_embedding, ngram_list, ngram_embeddings)
|
| 80 |
+
non_diversified = sorted([(ngram, ngram_result[ngram]) for ngram in ngram_result],
|
| 81 |
+
key=lambda x: x[1], reverse=True)[:top_n]
|
| 82 |
+
|
| 83 |
+
if diversify_result:
|
| 84 |
+
return diversify_result_kmeans(ngram_result, ngram_embeddings, top_n=top_n)
|
| 85 |
+
return non_diversified
|
| 86 |
+
|
| 87 |
+
def generate_ngram_list(self, doc_segmentised, filtered_doc_segmentised, ne_ls, ngram_n, min_freq):
|
| 88 |
+
ngram_low, ngram_high = ngram_n
|
| 89 |
+
|
| 90 |
+
# Adding ngram
|
| 91 |
+
ngram_list = set()
|
| 92 |
+
for n in range(ngram_low, ngram_high + 1):
|
| 93 |
+
ngram_list.update(get_candidate_ngrams(doc_segmentised, filtered_doc_segmentised, n, self.stopwords))
|
| 94 |
+
|
| 95 |
+
# print(sorted(ngram_list))
|
| 96 |
+
# Adding named entities ngram list
|
| 97 |
+
ne_ls_segmented = [self.annotator.word_segment(ne)[0] for ne in ne_ls]
|
| 98 |
+
print("Named Entities list")
|
| 99 |
+
print(ne_ls_segmented)
|
| 100 |
+
ngram_list.update(ne_ls_segmented)
|
| 101 |
+
|
| 102 |
+
# print(sorted(ngram_list))
|
| 103 |
+
# Removing overlapping ngrams
|
| 104 |
+
ngram_list = remove_overlapping_ngrams(ngram_list)
|
| 105 |
+
# print("Removed overlapping ngrams")
|
| 106 |
+
# print(sorted(ngram_list))
|
| 107 |
+
|
| 108 |
+
# Limit ngrams by minimum frequency
|
| 109 |
+
if min_freq > 1:
|
| 110 |
+
ngram_list = limit_minimum_frequency(doc_segmentised, ngram_list, min_freq=min_freq)
|
| 111 |
+
return ngram_list.keys()
|
| 112 |
+
|
| 113 |
+
return ngram_list
|
| 114 |
+
|
| 115 |
+
def extract_keywords(self, doc_embedding, ngram_list, ngram_embeddings):
|
| 116 |
+
ngram_result = compute_ngram_similarity(ngram_list, ngram_embeddings, doc_embedding)
|
| 117 |
+
ngram_result = remove_duplicates(ngram_result)
|
| 118 |
+
return ngram_result
|
| 119 |
+
|
| 120 |
+
|
| 121 |
+
if __name__ == "__main__":
|
| 122 |
+
phobert = torch.load(f'{dir_path}/pretrained-models/phobert.pt')
|
| 123 |
+
phobert.eval()
|
| 124 |
+
ner_model = torch.load(f'{dir_path}/pretrained-models/ner-vietnamese-electra-base.pt')
|
| 125 |
+
ner_model.eval()
|
| 126 |
+
kw_pipeline = KeywordExtractorPipeline(phobert, ner_model)
|
| 127 |
+
|
| 128 |
+
text_file_path = f'{dir_path}/test_file.txt'
|
| 129 |
+
with open(text_file_path, 'r') as f:
|
| 130 |
+
text = ' '.join([ln.strip() for ln in f.readlines()])
|
| 131 |
+
|
| 132 |
+
inp = {"text": text, "title": None}
|
| 133 |
+
kws = kw_pipeline(inputs=inp, min_freq=1, ngram_n=(1, 3), top_n=5, diversify_result=False)
|
| 134 |
+
print(kws)
|
pretrained-models/ner-vietnamese-electra-base.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:af136f7fcb73fba5edee9021032227ede597c2882f39d910b3b830cf49bf5d52
|
| 3 |
+
size 532423140
|
pretrained-models/phobert.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:984b4f9b49a06331113974f50c8dc96b845bf808034b79993c3ddbf4a946d872
|
| 3 |
+
size 540111904
|
pretrained-models/vncorenlp/VnCoreNLP-1.2.jar
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9e2811cdbc2ddfc71d04be5dc36e185c88dcd1ad4d5d69e4ff2e1369dccf7793
|
| 3 |
+
size 27412703
|
pretrained-models/vncorenlp/models/dep/vi-dep.xz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:266e4a3a55d5edd1607d5f036c2f95b70c0a6c80f58b57fd9962677a6ef331b7
|
| 3 |
+
size 16048864
|
pretrained-models/vncorenlp/models/ner/vi-500brownclusters.xz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d30f9cfdf0af193a69e185d1acda0306a9fbe1321f8a700f7c66557a90f92b8c
|
| 3 |
+
size 5599844
|
pretrained-models/vncorenlp/models/ner/vi-ner.xz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f04c5e752d7f99a6313b758fc2607a2c3906e58b1d60a37eb0192aead73d61f7
|
| 3 |
+
size 9956876
|
pretrained-models/vncorenlp/models/ner/vi-pretrainedembeddings.xz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:00d3d034f1b23a8bfe5168195741fde845808c212e6dfcd4c94bead1665eb0fc
|
| 3 |
+
size 57313672
|
pretrained-models/vncorenlp/models/postagger/vi-tagger
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a95608a5982db89c11353b451154ec396eccc0ff1f5b22874935ecdf4e0ace01
|
| 3 |
+
size 29709468
|
pretrained-models/vncorenlp/models/wordsegmenter/vi-vocab
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0a47c5b55bbce163029d37730a67b9479740388695c29c106c112b815613eaa5
|
| 3 |
+
size 526544
|
pretrained-models/vncorenlp/models/wordsegmenter/wordsegmenter.rdr
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9e62f96bd93e37a24f364238e8d8ae986fa5dad6dbc9f4eae622ab3651b7fa06
|
| 3 |
+
size 128508
|
requirements.txt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
torch
|
| 2 |
+
py_vncorenlp
|
| 3 |
+
transformers
|
vietnamese-stopwords-dash.txt
ADDED
|
@@ -0,0 +1,1998 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
a_lô
|
| 2 |
+
a_ha
|
| 3 |
+
ai
|
| 4 |
+
ai_ai
|
| 5 |
+
ai_nấy
|
| 6 |
+
ai_đó
|
| 7 |
+
alô
|
| 8 |
+
amen
|
| 9 |
+
anh
|
| 10 |
+
anh_ấy
|
| 11 |
+
ba
|
| 12 |
+
ba_ba
|
| 13 |
+
ba_bản
|
| 14 |
+
ba_cùng
|
| 15 |
+
ba_họ
|
| 16 |
+
ba_ngày
|
| 17 |
+
ba_ngôi
|
| 18 |
+
ba_tăng
|
| 19 |
+
bao_giờ
|
| 20 |
+
bao_lâu
|
| 21 |
+
bao_nhiêu
|
| 22 |
+
bao_nả
|
| 23 |
+
bay_biến
|
| 24 |
+
biết
|
| 25 |
+
biết_bao
|
| 26 |
+
biết_bao_nhiêu
|
| 27 |
+
biết_chắc
|
| 28 |
+
biết_chừng_nào
|
| 29 |
+
biết_mình
|
| 30 |
+
biết_mấy
|
| 31 |
+
biết_thế
|
| 32 |
+
biết_trước
|
| 33 |
+
biết_việc
|
| 34 |
+
biết_đâu
|
| 35 |
+
biết_đâu_chừng
|
| 36 |
+
biết_đâu_đấy
|
| 37 |
+
biết_được
|
| 38 |
+
buổi
|
| 39 |
+
buổi_làm
|
| 40 |
+
buổi_mới
|
| 41 |
+
buổi_ngày
|
| 42 |
+
buổi_sớm
|
| 43 |
+
bà
|
| 44 |
+
bà_ấy
|
| 45 |
+
bài
|
| 46 |
+
bài_bác
|
| 47 |
+
bài_bỏ
|
| 48 |
+
bài_cái
|
| 49 |
+
bác
|
| 50 |
+
bán
|
| 51 |
+
bán_cấp
|
| 52 |
+
bán_dạ
|
| 53 |
+
bán_thế
|
| 54 |
+
bây_bẩy
|
| 55 |
+
bây_chừ
|
| 56 |
+
bây_giờ
|
| 57 |
+
bây_nhiêu
|
| 58 |
+
bèn
|
| 59 |
+
béng
|
| 60 |
+
bên
|
| 61 |
+
bên_bị
|
| 62 |
+
bên_có
|
| 63 |
+
bên_cạnh
|
| 64 |
+
bông
|
| 65 |
+
bước
|
| 66 |
+
bước_khỏi
|
| 67 |
+
bước_tới
|
| 68 |
+
bước_đi
|
| 69 |
+
bạn
|
| 70 |
+
bản
|
| 71 |
+
bản_bộ
|
| 72 |
+
bản_riêng
|
| 73 |
+
bản_thân
|
| 74 |
+
bản_ý
|
| 75 |
+
bất_chợt
|
| 76 |
+
bất_cứ
|
| 77 |
+
bất_giác
|
| 78 |
+
bất_kì
|
| 79 |
+
bất_kể
|
| 80 |
+
bất_kỳ
|
| 81 |
+
bất_luận
|
| 82 |
+
bất_ngờ
|
| 83 |
+
bất_nhược
|
| 84 |
+
bất_quá
|
| 85 |
+
bất_quá_chỉ
|
| 86 |
+
bất_thình_lình
|
| 87 |
+
bất_tử
|
| 88 |
+
bất_đồ
|
| 89 |
+
bấy
|
| 90 |
+
bấy_chầy
|
| 91 |
+
bấy_chừ
|
| 92 |
+
bấy_giờ
|
| 93 |
+
bấy_lâu
|
| 94 |
+
bấy_lâu_nay
|
| 95 |
+
bấy_nay
|
| 96 |
+
bấy_nhiêu
|
| 97 |
+
bập_bà_bập_bõm
|
| 98 |
+
bập_bõm
|
| 99 |
+
bắt_đầu
|
| 100 |
+
bắt_đầu_từ
|
| 101 |
+
bằng
|
| 102 |
+
bằng_cứ
|
| 103 |
+
bằng_không
|
| 104 |
+
bằng_người
|
| 105 |
+
bằng_nhau
|
| 106 |
+
bằng_như
|
| 107 |
+
bằng_nào
|
| 108 |
+
bằng_nấy
|
| 109 |
+
bằng_vào
|
| 110 |
+
bằng_được
|
| 111 |
+
bằng_ấy
|
| 112 |
+
bển
|
| 113 |
+
bệt
|
| 114 |
+
bị
|
| 115 |
+
bị_chú
|
| 116 |
+
bị_vì
|
| 117 |
+
bỏ
|
| 118 |
+
bỏ_bà
|
| 119 |
+
bỏ_cha
|
| 120 |
+
bỏ_cuộc
|
| 121 |
+
bỏ_không
|
| 122 |
+
bỏ_lại
|
| 123 |
+
bỏ_mình
|
| 124 |
+
bỏ_mất
|
| 125 |
+
bỏ_mẹ
|
| 126 |
+
bỏ_nhỏ
|
| 127 |
+
bỏ_quá
|
| 128 |
+
bỏ_ra
|
| 129 |
+
bỏ_riêng
|
| 130 |
+
bỏ_việc
|
| 131 |
+
bỏ_xa
|
| 132 |
+
bỗng
|
| 133 |
+
bỗng_chốc
|
| 134 |
+
bỗng_dưng
|
| 135 |
+
bỗng_không
|
| 136 |
+
bỗng_nhiên
|
| 137 |
+
bỗng_nhưng
|
| 138 |
+
bỗng_thấy
|
| 139 |
+
bỗng_đâu
|
| 140 |
+
bộ
|
| 141 |
+
bộ_thuộc
|
| 142 |
+
bộ_điều
|
| 143 |
+
bội_phần
|
| 144 |
+
bớ
|
| 145 |
+
bởi
|
| 146 |
+
bởi_ai
|
| 147 |
+
bởi_chưng
|
| 148 |
+
bởi_nhưng
|
| 149 |
+
bởi_sao
|
| 150 |
+
bởi_thế
|
| 151 |
+
bởi_thế_cho_nên
|
| 152 |
+
bởi_tại
|
| 153 |
+
bởi_vì
|
| 154 |
+
bởi_vậy
|
| 155 |
+
bởi_đâu
|
| 156 |
+
bức
|
| 157 |
+
cao
|
| 158 |
+
cao_lâu
|
| 159 |
+
cao_ráo
|
| 160 |
+
cao_răng
|
| 161 |
+
cao_sang
|
| 162 |
+
cao_số
|
| 163 |
+
cao_thấp
|
| 164 |
+
cao_thế
|
| 165 |
+
cao_xa
|
| 166 |
+
cha
|
| 167 |
+
cha_chả
|
| 168 |
+
chao_ôi
|
| 169 |
+
chia_sẻ
|
| 170 |
+
chiếc
|
| 171 |
+
cho
|
| 172 |
+
cho_biết
|
| 173 |
+
cho_chắc
|
| 174 |
+
cho_hay
|
| 175 |
+
cho_nhau
|
| 176 |
+
cho_nên
|
| 177 |
+
cho_rằng
|
| 178 |
+
cho_rồi
|
| 179 |
+
cho_thấy
|
| 180 |
+
cho_tin
|
| 181 |
+
cho_tới
|
| 182 |
+
cho_tới_khi
|
| 183 |
+
cho_về
|
| 184 |
+
cho_ăn
|
| 185 |
+
cho_đang
|
| 186 |
+
cho_được
|
| 187 |
+
cho_đến
|
| 188 |
+
cho_đến_khi
|
| 189 |
+
cho_đến_nỗi
|
| 190 |
+
choa
|
| 191 |
+
chu_cha
|
| 192 |
+
chui_cha
|
| 193 |
+
chung
|
| 194 |
+
chung_cho
|
| 195 |
+
chung_chung
|
| 196 |
+
chung_cuộc
|
| 197 |
+
chung_cục
|
| 198 |
+
chung_nhau
|
| 199 |
+
chung_qui
|
| 200 |
+
chung_quy
|
| 201 |
+
chung_quy_lại
|
| 202 |
+
chung_ái
|
| 203 |
+
chuyển
|
| 204 |
+
chuyển_tự
|
| 205 |
+
chuyển_đạt
|
| 206 |
+
chuyện
|
| 207 |
+
chuẩn_bị
|
| 208 |
+
chành_chạnh
|
| 209 |
+
chí_chết
|
| 210 |
+
chính
|
| 211 |
+
chính_bản
|
| 212 |
+
chính_giữa
|
| 213 |
+
chính_là
|
| 214 |
+
chính_thị
|
| 215 |
+
chính_điểm
|
| 216 |
+
chùn_chùn
|
| 217 |
+
chùn_chũn
|
| 218 |
+
chú
|
| 219 |
+
chú_dẫn
|
| 220 |
+
chú_khách
|
| 221 |
+
chú_mày
|
| 222 |
+
chú_mình
|
| 223 |
+
chúng
|
| 224 |
+
chúng_mình
|
| 225 |
+
chúng_ta
|
| 226 |
+
chúng_tôi
|
| 227 |
+
chúng_ông
|
| 228 |
+
chăn_chắn
|
| 229 |
+
chăng
|
| 230 |
+
chăng_chắc
|
| 231 |
+
chăng_nữa
|
| 232 |
+
chơi
|
| 233 |
+
chơi_họ
|
| 234 |
+
chưa
|
| 235 |
+
chưa_bao_giờ
|
| 236 |
+
chưa_chắc
|
| 237 |
+
chưa_có
|
| 238 |
+
chưa_cần
|
| 239 |
+
chưa_dùng
|
| 240 |
+
chưa_dễ
|
| 241 |
+
chưa_kể
|
| 242 |
+
chưa_tính
|
| 243 |
+
chưa_từng
|
| 244 |
+
chầm_chập
|
| 245 |
+
chậc
|
| 246 |
+
chắc
|
| 247 |
+
chắc_chắn
|
| 248 |
+
chắc_dạ
|
| 249 |
+
chắc_hẳn
|
| 250 |
+
chắc_lòng
|
| 251 |
+
chắc_người
|
| 252 |
+
chắc_vào
|
| 253 |
+
chắc_ăn
|
| 254 |
+
chẳng_lẽ
|
| 255 |
+
chẳng_những
|
| 256 |
+
chẳng_nữa
|
| 257 |
+
chẳng_phải
|
| 258 |
+
chết_nỗi
|
| 259 |
+
chết_thật
|
| 260 |
+
chết_tiệt
|
| 261 |
+
chỉ
|
| 262 |
+
chỉ_chính
|
| 263 |
+
chỉ_có
|
| 264 |
+
chỉ_là
|
| 265 |
+
chỉ_tên
|
| 266 |
+
chỉn
|
| 267 |
+
chị
|
| 268 |
+
chị_bộ
|
| 269 |
+
chị_ấy
|
| 270 |
+
chịu
|
| 271 |
+
chịu_chưa
|
| 272 |
+
chịu_lời
|
| 273 |
+
chịu_tốt
|
| 274 |
+
chịu_ăn
|
| 275 |
+
chọn
|
| 276 |
+
chọn_bên
|
| 277 |
+
chọn_ra
|
| 278 |
+
chốc_chốc
|
| 279 |
+
chớ
|
| 280 |
+
chớ_chi
|
| 281 |
+
chớ_gì
|
| 282 |
+
chớ_không
|
| 283 |
+
chớ_kể
|
| 284 |
+
chớ_như
|
| 285 |
+
chợt
|
| 286 |
+
chợt_nghe
|
| 287 |
+
chợt_nhìn
|
| 288 |
+
chủn
|
| 289 |
+
chứ
|
| 290 |
+
chứ_ai
|
| 291 |
+
chứ_còn
|
| 292 |
+
chứ_gì
|
| 293 |
+
chứ_không
|
| 294 |
+
chứ_không_phải
|
| 295 |
+
chứ_lại
|
| 296 |
+
chứ_lị
|
| 297 |
+
chứ_như
|
| 298 |
+
chứ_sao
|
| 299 |
+
coi_bộ
|
| 300 |
+
coi_mòi
|
| 301 |
+
con
|
| 302 |
+
con_con
|
| 303 |
+
con_dạ
|
| 304 |
+
con_nhà
|
| 305 |
+
con_tính
|
| 306 |
+
cu_cậu
|
| 307 |
+
cuối
|
| 308 |
+
cuối_cùng
|
| 309 |
+
cuối_điểm
|
| 310 |
+
cuốn
|
| 311 |
+
cuộc
|
| 312 |
+
càng
|
| 313 |
+
càng_càng
|
| 314 |
+
càng_hay
|
| 315 |
+
cá_nhân
|
| 316 |
+
các
|
| 317 |
+
các_cậu
|
| 318 |
+
cách
|
| 319 |
+
cách_bức
|
| 320 |
+
cách_không
|
| 321 |
+
cách_nhau
|
| 322 |
+
cách_đều
|
| 323 |
+
cái
|
| 324 |
+
cái_gì
|
| 325 |
+
cái_họ
|
| 326 |
+
cái_đã
|
| 327 |
+
cái_đó
|
| 328 |
+
cái_ấy
|
| 329 |
+
cây_nước
|
| 330 |
+
còn
|
| 331 |
+
còn_như
|
| 332 |
+
còn_nữa
|
| 333 |
+
còn_thời_gian
|
| 334 |
+
còn_về
|
| 335 |
+
có
|
| 336 |
+
có_ai
|
| 337 |
+
có_chuyện
|
| 338 |
+
có_chăng
|
| 339 |
+
có_chăng_là
|
| 340 |
+
có_chứ
|
| 341 |
+
có_cơ
|
| 342 |
+
có_dễ
|
| 343 |
+
có_họ
|
| 344 |
+
có_khi
|
| 345 |
+
có_ngày
|
| 346 |
+
có_người
|
| 347 |
+
có_nhiều
|
| 348 |
+
có_nhà
|
| 349 |
+
có_phải
|
| 350 |
+
có_số
|
| 351 |
+
có_tháng
|
| 352 |
+
có_thế
|
| 353 |
+
có_thể
|
| 354 |
+
có_vẻ
|
| 355 |
+
có_ý
|
| 356 |
+
có_ăn
|
| 357 |
+
có_điều
|
| 358 |
+
có_điều_kiện
|
| 359 |
+
có_đáng
|
| 360 |
+
có_đâu
|
| 361 |
+
có_được
|
| 362 |
+
cóc_khô
|
| 363 |
+
cô
|
| 364 |
+
cô_mình
|
| 365 |
+
cô_quả
|
| 366 |
+
cô_tăng
|
| 367 |
+
cô_ấy
|
| 368 |
+
công_nhiên
|
| 369 |
+
cùng
|
| 370 |
+
cùng_chung
|
| 371 |
+
cùng_cực
|
| 372 |
+
cùng_nhau
|
| 373 |
+
cùng_tuổi
|
| 374 |
+
cùng_tột
|
| 375 |
+
cùng_với
|
| 376 |
+
cùng_ăn
|
| 377 |
+
căn
|
| 378 |
+
căn_cái
|
| 379 |
+
căn_cắt
|
| 380 |
+
căn_tính
|
| 381 |
+
cũng
|
| 382 |
+
cũng_như
|
| 383 |
+
cũng_nên
|
| 384 |
+
cũng_thế
|
| 385 |
+
cũng_vậy
|
| 386 |
+
cũng_vậy_thôi
|
| 387 |
+
cũng_được
|
| 388 |
+
cơ
|
| 389 |
+
cơ_chỉ
|
| 390 |
+
cơ_chừng
|
| 391 |
+
cơ_cùng
|
| 392 |
+
cơ_dẫn
|
| 393 |
+
cơ_hồ
|
| 394 |
+
cơ_hội
|
| 395 |
+
cơ_mà
|
| 396 |
+
cơn
|
| 397 |
+
cả
|
| 398 |
+
cả_nghe
|
| 399 |
+
cả_nghĩ
|
| 400 |
+
cả_ngày
|
| 401 |
+
cả_người
|
| 402 |
+
cả_nhà
|
| 403 |
+
cả_năm
|
| 404 |
+
cả_thảy
|
| 405 |
+
cả_thể
|
| 406 |
+
cả_tin
|
| 407 |
+
cả_ăn
|
| 408 |
+
cả_đến
|
| 409 |
+
cảm_thấy
|
| 410 |
+
cảm_ơn
|
| 411 |
+
cấp
|
| 412 |
+
cấp_số
|
| 413 |
+
cấp_trực_tiếp
|
| 414 |
+
cần
|
| 415 |
+
cần_cấp
|
| 416 |
+
cần_gì
|
| 417 |
+
cần_số
|
| 418 |
+
cật_lực
|
| 419 |
+
cật_sức
|
| 420 |
+
cậu
|
| 421 |
+
cổ_lai
|
| 422 |
+
cụ_thể
|
| 423 |
+
cụ_thể_là
|
| 424 |
+
cụ_thể_như
|
| 425 |
+
của
|
| 426 |
+
của_ngọt
|
| 427 |
+
của_tin
|
| 428 |
+
cứ
|
| 429 |
+
cứ_như
|
| 430 |
+
cứ_việc
|
| 431 |
+
cứ_điểm
|
| 432 |
+
cực_lực
|
| 433 |
+
do
|
| 434 |
+
do_vì
|
| 435 |
+
do_vậy
|
| 436 |
+
do_đó
|
| 437 |
+
duy
|
| 438 |
+
duy_chỉ
|
| 439 |
+
duy_có
|
| 440 |
+
dài
|
| 441 |
+
dài_lời
|
| 442 |
+
dài_ra
|
| 443 |
+
dành
|
| 444 |
+
dành_dành
|
| 445 |
+
dào
|
| 446 |
+
dì
|
| 447 |
+
dù
|
| 448 |
+
dù_cho
|
| 449 |
+
dù_dì
|
| 450 |
+
dù_gì
|
| 451 |
+
dù_rằng
|
| 452 |
+
dù_sao
|
| 453 |
+
dùng
|
| 454 |
+
dùng_cho
|
| 455 |
+
dùng_hết
|
| 456 |
+
dùng_làm
|
| 457 |
+
dùng_đến
|
| 458 |
+
dưới
|
| 459 |
+
dưới_nước
|
| 460 |
+
dạ
|
| 461 |
+
dạ_bán
|
| 462 |
+
dạ_con
|
| 463 |
+
dạ_dài
|
| 464 |
+
dạ_dạ
|
| 465 |
+
dạ_khách
|
| 466 |
+
dần_dà
|
| 467 |
+
dần_dần
|
| 468 |
+
dầu_sao
|
| 469 |
+
dẫn
|
| 470 |
+
dẫu
|
| 471 |
+
dẫu_mà
|
| 472 |
+
dẫu_rằng
|
| 473 |
+
dẫu_sao
|
| 474 |
+
dễ
|
| 475 |
+
dễ_dùng
|
| 476 |
+
dễ_gì
|
| 477 |
+
dễ_khiến
|
| 478 |
+
dễ_nghe
|
| 479 |
+
dễ_ngươi
|
| 480 |
+
dễ_như_chơi
|
| 481 |
+
dễ_sợ
|
| 482 |
+
dễ_sử_dụng
|
| 483 |
+
dễ_thường
|
| 484 |
+
dễ_thấy
|
| 485 |
+
dễ_ăn
|
| 486 |
+
dễ_đâu
|
| 487 |
+
dở_chừng
|
| 488 |
+
dữ
|
| 489 |
+
dữ_cách
|
| 490 |
+
em
|
| 491 |
+
em_em
|
| 492 |
+
giá_trị
|
| 493 |
+
giá_trị_thực_tế
|
| 494 |
+
giảm
|
| 495 |
+
giảm_chính
|
| 496 |
+
giảm_thấp
|
| 497 |
+
giảm_thế
|
| 498 |
+
giống
|
| 499 |
+
giống_người
|
| 500 |
+
giống_nhau
|
| 501 |
+
giống_như
|
| 502 |
+
giờ
|
| 503 |
+
giờ_lâu
|
| 504 |
+
giờ_này
|
| 505 |
+
giờ_đi
|
| 506 |
+
giờ_đây
|
| 507 |
+
giờ_đến
|
| 508 |
+
giữ
|
| 509 |
+
giữ_lấy
|
| 510 |
+
giữ_ý
|
| 511 |
+
giữa
|
| 512 |
+
giữa_lúc
|
| 513 |
+
gây
|
| 514 |
+
gây_cho
|
| 515 |
+
gây_giống
|
| 516 |
+
gây_ra
|
| 517 |
+
gây_thêm
|
| 518 |
+
gì
|
| 519 |
+
gì_gì
|
| 520 |
+
gì_đó
|
| 521 |
+
gần
|
| 522 |
+
gần_bên
|
| 523 |
+
gần_hết
|
| 524 |
+
gần_ngày
|
| 525 |
+
gần_như
|
| 526 |
+
gần_xa
|
| 527 |
+
gần_đây
|
| 528 |
+
gần_đến
|
| 529 |
+
gặp
|
| 530 |
+
gặp_khó_khăn
|
| 531 |
+
gặp_phải
|
| 532 |
+
gồm
|
| 533 |
+
hay
|
| 534 |
+
hay_biết
|
| 535 |
+
hay_hay
|
| 536 |
+
hay_không
|
| 537 |
+
hay_là
|
| 538 |
+
hay_làm
|
| 539 |
+
hay_nhỉ
|
| 540 |
+
hay_nói
|
| 541 |
+
hay_sao
|
| 542 |
+
hay_tin
|
| 543 |
+
hay_đâu
|
| 544 |
+
hiểu
|
| 545 |
+
hiện_nay
|
| 546 |
+
hiện_tại
|
| 547 |
+
hoàn_toàn
|
| 548 |
+
hoặc
|
| 549 |
+
hoặc_là
|
| 550 |
+
hãy
|
| 551 |
+
hãy_còn
|
| 552 |
+
hơn
|
| 553 |
+
hơn_cả
|
| 554 |
+
hơn_hết
|
| 555 |
+
hơn_là
|
| 556 |
+
hơn_nữa
|
| 557 |
+
hơn_trước
|
| 558 |
+
hầu_hết
|
| 559 |
+
hết
|
| 560 |
+
hết_chuyện
|
| 561 |
+
hết_cả
|
| 562 |
+
hết_của
|
| 563 |
+
hết_nói
|
| 564 |
+
hết_ráo
|
| 565 |
+
hết_rồi
|
| 566 |
+
hết_ý
|
| 567 |
+
họ
|
| 568 |
+
họ_gần
|
| 569 |
+
họ_xa
|
| 570 |
+
hỏi
|
| 571 |
+
hỏi_lại
|
| 572 |
+
hỏi_xem
|
| 573 |
+
hỏi_xin
|
| 574 |
+
hỗ_trợ
|
| 575 |
+
khi
|
| 576 |
+
khi_khác
|
| 577 |
+
khi_không
|
| 578 |
+
khi_nào
|
| 579 |
+
khi_nên
|
| 580 |
+
khi_trước
|
| 581 |
+
khiến
|
| 582 |
+
khoảng
|
| 583 |
+
khoảng_cách
|
| 584 |
+
khoảng_không
|
| 585 |
+
khá
|
| 586 |
+
khá_tốt
|
| 587 |
+
khác
|
| 588 |
+
khác_gì
|
| 589 |
+
khác_khác
|
| 590 |
+
khác_nhau
|
| 591 |
+
khác_nào
|
| 592 |
+
khác_thường
|
| 593 |
+
khác_xa
|
| 594 |
+
khách
|
| 595 |
+
khó
|
| 596 |
+
khó_biết
|
| 597 |
+
khó_chơi
|
| 598 |
+
khó_khăn
|
| 599 |
+
khó_làm
|
| 600 |
+
khó_mở
|
| 601 |
+
khó_nghe
|
| 602 |
+
khó_nghĩ
|
| 603 |
+
khó_nói
|
| 604 |
+
khó_thấy
|
| 605 |
+
khó_tránh
|
| 606 |
+
không
|
| 607 |
+
không_ai
|
| 608 |
+
không_bao_giờ
|
| 609 |
+
không_bao_lâu
|
| 610 |
+
không_biết
|
| 611 |
+
không_bán
|
| 612 |
+
không_chỉ
|
| 613 |
+
không_còn
|
| 614 |
+
không_có
|
| 615 |
+
không_có_gì
|
| 616 |
+
không_cùng
|
| 617 |
+
không_cần
|
| 618 |
+
không_cứ
|
| 619 |
+
không_dùng
|
| 620 |
+
không_gì
|
| 621 |
+
không_hay
|
| 622 |
+
không_khỏi
|
| 623 |
+
không_kể
|
| 624 |
+
không_ngoài
|
| 625 |
+
không_nhận
|
| 626 |
+
không_những
|
| 627 |
+
không_phải
|
| 628 |
+
không_phải_không
|
| 629 |
+
không_thể
|
| 630 |
+
không_tính
|
| 631 |
+
không_điều_kiện
|
| 632 |
+
không_được
|
| 633 |
+
không_đầy
|
| 634 |
+
không_để
|
| 635 |
+
khẳng_định
|
| 636 |
+
khỏi
|
| 637 |
+
khỏi_nói
|
| 638 |
+
kể
|
| 639 |
+
kể_cả
|
| 640 |
+
kể_như
|
| 641 |
+
kể_tới
|
| 642 |
+
kể_từ
|
| 643 |
+
liên_quan
|
| 644 |
+
loại
|
| 645 |
+
loại_từ
|
| 646 |
+
luôn
|
| 647 |
+
luôn_cả
|
| 648 |
+
luôn_luôn
|
| 649 |
+
luôn_tay
|
| 650 |
+
là
|
| 651 |
+
là_cùng
|
| 652 |
+
là_là
|
| 653 |
+
là_nhiều
|
| 654 |
+
là_phải
|
| 655 |
+
là_thế_nào
|
| 656 |
+
là_vì
|
| 657 |
+
là_ít
|
| 658 |
+
làm
|
| 659 |
+
làm_bằng
|
| 660 |
+
làm_cho
|
| 661 |
+
làm_dần_dần
|
| 662 |
+
làm_gì
|
| 663 |
+
làm_lòng
|
| 664 |
+
làm_lại
|
| 665 |
+
làm_lấy
|
| 666 |
+
làm_mất
|
| 667 |
+
làm_ngay
|
| 668 |
+
làm_như
|
| 669 |
+
làm_nên
|
| 670 |
+
làm_ra
|
| 671 |
+
làm_riêng
|
| 672 |
+
làm_sao
|
| 673 |
+
làm_theo
|
| 674 |
+
làm_thế_nào
|
| 675 |
+
làm_tin
|
| 676 |
+
làm_tôi
|
| 677 |
+
làm_tăng
|
| 678 |
+
làm_tại
|
| 679 |
+
làm_tắp_lự
|
| 680 |
+
làm_vì
|
| 681 |
+
làm_đúng
|
| 682 |
+
làm_được
|
| 683 |
+
lâu
|
| 684 |
+
lâu_các
|
| 685 |
+
lâu_lâu
|
| 686 |
+
lâu_nay
|
| 687 |
+
lâu_ngày
|
| 688 |
+
lên
|
| 689 |
+
lên_cao
|
| 690 |
+
lên_cơn
|
| 691 |
+
lên_mạnh
|
| 692 |
+
lên_ngôi
|
| 693 |
+
lên_nước
|
| 694 |
+
lên_số
|
| 695 |
+
lên_xuống
|
| 696 |
+
lên_đến
|
| 697 |
+
lòng
|
| 698 |
+
lòng_không
|
| 699 |
+
lúc
|
| 700 |
+
lúc_khác
|
| 701 |
+
lúc_lâu
|
| 702 |
+
lúc_nào
|
| 703 |
+
lúc_này
|
| 704 |
+
lúc_sáng
|
| 705 |
+
lúc_trước
|
| 706 |
+
lúc_đi
|
| 707 |
+
lúc_đó
|
| 708 |
+
lúc_đến
|
| 709 |
+
lúc_ấy
|
| 710 |
+
lý_do
|
| 711 |
+
lượng
|
| 712 |
+
lượng_cả
|
| 713 |
+
lượng_số
|
| 714 |
+
lượng_từ
|
| 715 |
+
lại
|
| 716 |
+
lại_bộ
|
| 717 |
+
lại_cái
|
| 718 |
+
lại_còn
|
| 719 |
+
lại_giống
|
| 720 |
+
lại_làm
|
| 721 |
+
lại_người
|
| 722 |
+
lại_nói
|
| 723 |
+
lại_nữa
|
| 724 |
+
lại_quả
|
| 725 |
+
lại_thôi
|
| 726 |
+
lại_ăn
|
| 727 |
+
lại_đây
|
| 728 |
+
lấy
|
| 729 |
+
lấy_có
|
| 730 |
+
lấy_cả
|
| 731 |
+
lấy_giống
|
| 732 |
+
lấy_làm
|
| 733 |
+
lấy_lý_do
|
| 734 |
+
lấy_lại
|
| 735 |
+
lấy_ra
|
| 736 |
+
lấy_ráo
|
| 737 |
+
lấy_sau
|
| 738 |
+
lấy_số
|
| 739 |
+
lấy_thêm
|
| 740 |
+
lấy_thế
|
| 741 |
+
lấy_vào
|
| 742 |
+
lấy_xuống
|
| 743 |
+
lấy_được
|
| 744 |
+
lấy_để
|
| 745 |
+
lần
|
| 746 |
+
lần_khác
|
| 747 |
+
lần_lần
|
| 748 |
+
lần_nào
|
| 749 |
+
lần_này
|
| 750 |
+
lần_sang
|
| 751 |
+
lần_sau
|
| 752 |
+
lần_theo
|
| 753 |
+
lần_trước
|
| 754 |
+
lần_tìm
|
| 755 |
+
lớn
|
| 756 |
+
lớn_lên
|
| 757 |
+
lớn_nhỏ
|
| 758 |
+
lời
|
| 759 |
+
lời_chú
|
| 760 |
+
lời_nói
|
| 761 |
+
mang
|
| 762 |
+
mang_lại
|
| 763 |
+
mang_mang
|
| 764 |
+
mang_nặng
|
| 765 |
+
mang_về
|
| 766 |
+
muốn
|
| 767 |
+
mà
|
| 768 |
+
mà_cả
|
| 769 |
+
mà_không
|
| 770 |
+
mà_lại
|
| 771 |
+
mà_thôi
|
| 772 |
+
mà_vẫn
|
| 773 |
+
mình
|
| 774 |
+
mạnh
|
| 775 |
+
mất
|
| 776 |
+
mất_còn
|
| 777 |
+
mọi
|
| 778 |
+
mọi_giờ
|
| 779 |
+
mọi_khi
|
| 780 |
+
mọi_lúc
|
| 781 |
+
mọi_người
|
| 782 |
+
mọi_nơi
|
| 783 |
+
mọi_sự
|
| 784 |
+
mọi_thứ
|
| 785 |
+
mọi_việc
|
| 786 |
+
mối
|
| 787 |
+
mỗi
|
| 788 |
+
mỗi_lúc
|
| 789 |
+
mỗi_lần
|
| 790 |
+
mỗi_một
|
| 791 |
+
mỗi_ngày
|
| 792 |
+
mỗi_người
|
| 793 |
+
một
|
| 794 |
+
một_cách
|
| 795 |
+
một_cơn
|
| 796 |
+
một_khi
|
| 797 |
+
một_lúc
|
| 798 |
+
một_số
|
| 799 |
+
một_vài
|
| 800 |
+
một_ít
|
| 801 |
+
mới
|
| 802 |
+
mới_hay
|
| 803 |
+
mới_rồi
|
| 804 |
+
mới_đây
|
| 805 |
+
mở
|
| 806 |
+
mở_mang
|
| 807 |
+
mở_nước
|
| 808 |
+
mở_ra
|
| 809 |
+
mợ
|
| 810 |
+
mức
|
| 811 |
+
nay
|
| 812 |
+
ngay
|
| 813 |
+
ngay_bây_giờ
|
| 814 |
+
ngay_cả
|
| 815 |
+
ngay_khi
|
| 816 |
+
ngay_khi_đến
|
| 817 |
+
ngay_lúc
|
| 818 |
+
ngay_lúc_này
|
| 819 |
+
ngay_lập_tức
|
| 820 |
+
ngay_thật
|
| 821 |
+
ngay_tức_khắc
|
| 822 |
+
ngay_tức_thì
|
| 823 |
+
ngay_từ
|
| 824 |
+
nghe
|
| 825 |
+
nghe_chừng
|
| 826 |
+
nghe_hiểu
|
| 827 |
+
nghe_không
|
| 828 |
+
nghe_lại
|
| 829 |
+
nghe_nhìn
|
| 830 |
+
nghe_như
|
| 831 |
+
nghe_nói
|
| 832 |
+
nghe_ra
|
| 833 |
+
nghe_rõ
|
| 834 |
+
nghe_thấy
|
| 835 |
+
nghe_tin
|
| 836 |
+
nghe_trực_tiếp
|
| 837 |
+
nghe_đâu
|
| 838 |
+
nghe_đâu_như
|
| 839 |
+
nghe_được
|
| 840 |
+
nghen
|
| 841 |
+
nghiễm_nhiên
|
| 842 |
+
nghĩ
|
| 843 |
+
nghĩ_lại
|
| 844 |
+
nghĩ_ra
|
| 845 |
+
nghĩ_tới
|
| 846 |
+
nghĩ_xa
|
| 847 |
+
nghĩ_đến
|
| 848 |
+
nghỉm
|
| 849 |
+
ngoài
|
| 850 |
+
ngoài_này
|
| 851 |
+
ngoài_ra
|
| 852 |
+
ngoài_xa
|
| 853 |
+
ngoải
|
| 854 |
+
nguồn
|
| 855 |
+
ngày
|
| 856 |
+
ngày_càng
|
| 857 |
+
ngày_cấp
|
| 858 |
+
ngày_giờ
|
| 859 |
+
ngày_ngày
|
| 860 |
+
ngày_nào
|
| 861 |
+
ngày_này
|
| 862 |
+
ngày_nọ
|
| 863 |
+
ngày_qua
|
| 864 |
+
ngày_rày
|
| 865 |
+
ngày_tháng
|
| 866 |
+
ngày_xưa
|
| 867 |
+
ngày_xửa
|
| 868 |
+
ngày_đến
|
| 869 |
+
ngày_ấy
|
| 870 |
+
ngôi
|
| 871 |
+
ngôi_thứ
|
| 872 |
+
ngõ_hầu
|
| 873 |
+
ngăn_ngắt
|
| 874 |
+
ngươi
|
| 875 |
+
người_hỏi
|
| 876 |
+
người_khác
|
| 877 |
+
người_khách
|
| 878 |
+
người_mình
|
| 879 |
+
người_nghe
|
| 880 |
+
người_người
|
| 881 |
+
người_nhận
|
| 882 |
+
ngọn
|
| 883 |
+
ngọn_nguồn
|
| 884 |
+
ngọt
|
| 885 |
+
ngồi
|
| 886 |
+
ngồi_bệt
|
| 887 |
+
ngồi_không
|
| 888 |
+
ngồi_sau
|
| 889 |
+
ngồi_trệt
|
| 890 |
+
ngộ_nhỡ
|
| 891 |
+
nhanh
|
| 892 |
+
nhanh_lên
|
| 893 |
+
nhanh_tay
|
| 894 |
+
nhau
|
| 895 |
+
nhiên_hậu
|
| 896 |
+
nhiều
|
| 897 |
+
nhiều_ít
|
| 898 |
+
nhiệt_liệt
|
| 899 |
+
nhung_nhăng
|
| 900 |
+
nhà
|
| 901 |
+
nhà_chung
|
| 902 |
+
nhà_khó
|
| 903 |
+
nhà_làm
|
| 904 |
+
nhà_ngoài
|
| 905 |
+
nhà_ngươi
|
| 906 |
+
nhà_tôi
|
| 907 |
+
nhà_việc
|
| 908 |
+
nhân_dịp
|
| 909 |
+
nhân_tiện
|
| 910 |
+
nhé
|
| 911 |
+
nhìn
|
| 912 |
+
nhìn_chung
|
| 913 |
+
nhìn_lại
|
| 914 |
+
nhìn_nhận
|
| 915 |
+
nhìn_theo
|
| 916 |
+
nhìn_thấy
|
| 917 |
+
nhìn_xuống
|
| 918 |
+
nhóm
|
| 919 |
+
nhón_nhén
|
| 920 |
+
như
|
| 921 |
+
như_ai
|
| 922 |
+
như_chơi
|
| 923 |
+
như_không
|
| 924 |
+
như_là
|
| 925 |
+
như_nhau
|
| 926 |
+
như_quả
|
| 927 |
+
như_sau
|
| 928 |
+
như_thường
|
| 929 |
+
như_thế
|
| 930 |
+
như_thế_nào
|
| 931 |
+
như_thể
|
| 932 |
+
như_trên
|
| 933 |
+
như_trước
|
| 934 |
+
như_tuồng
|
| 935 |
+
như_vậy
|
| 936 |
+
như_ý
|
| 937 |
+
nhưng
|
| 938 |
+
nhưng_mà
|
| 939 |
+
nhược_bằng
|
| 940 |
+
nhất
|
| 941 |
+
nhất_loạt
|
| 942 |
+
nhất_luật
|
| 943 |
+
nhất_là
|
| 944 |
+
nhất_mực
|
| 945 |
+
nhất_nhất
|
| 946 |
+
nhất_quyết
|
| 947 |
+
nhất_sinh
|
| 948 |
+
nhất_thiết
|
| 949 |
+
nhất_thì
|
| 950 |
+
nhất_tâm
|
| 951 |
+
nhất_tề
|
| 952 |
+
nhất_đán
|
| 953 |
+
nhất_định
|
| 954 |
+
nhận
|
| 955 |
+
nhận_biết
|
| 956 |
+
nhận_họ
|
| 957 |
+
nhận_làm
|
| 958 |
+
nhận_nhau
|
| 959 |
+
nhận_ra
|
| 960 |
+
nhận_thấy
|
| 961 |
+
nhận_việc
|
| 962 |
+
nhận_được
|
| 963 |
+
nhằm
|
| 964 |
+
nhằm_khi
|
| 965 |
+
nhằm_lúc
|
| 966 |
+
nhằm_vào
|
| 967 |
+
nhằm_để
|
| 968 |
+
nhỉ
|
| 969 |
+
nhỏ
|
| 970 |
+
nhỏ_người
|
| 971 |
+
nhớ
|
| 972 |
+
nhớ_bập_bõm
|
| 973 |
+
nhớ_lại
|
| 974 |
+
nhớ_lấy
|
| 975 |
+
nhớ_ra
|
| 976 |
+
nhờ
|
| 977 |
+
nhờ_chuyển
|
| 978 |
+
nhờ_có
|
| 979 |
+
nhờ_nhờ
|
| 980 |
+
nhờ_đó
|
| 981 |
+
nhỡ_ra
|
| 982 |
+
những
|
| 983 |
+
những_ai
|
| 984 |
+
những_khi
|
| 985 |
+
những_là
|
| 986 |
+
những_lúc
|
| 987 |
+
những_muốn
|
| 988 |
+
những_như
|
| 989 |
+
nào
|
| 990 |
+
nào_cũng
|
| 991 |
+
nào_hay
|
| 992 |
+
nào_là
|
| 993 |
+
nào_phải
|
| 994 |
+
nào_đâu
|
| 995 |
+
nào_đó
|
| 996 |
+
này
|
| 997 |
+
này_nọ
|
| 998 |
+
nên
|
| 999 |
+
nên_chi
|
| 1000 |
+
nên_chăng
|
| 1001 |
+
nên_làm
|
| 1002 |
+
nên_người
|
| 1003 |
+
nên_tránh
|
| 1004 |
+
nó
|
| 1005 |
+
nóc
|
| 1006 |
+
nói
|
| 1007 |
+
nói_bông
|
| 1008 |
+
nói_chung
|
| 1009 |
+
nói_khó
|
| 1010 |
+
nói_là
|
| 1011 |
+
nói_lên
|
| 1012 |
+
nói_lại
|
| 1013 |
+
nói_nhỏ
|
| 1014 |
+
nói_phải
|
| 1015 |
+
nói_qua
|
| 1016 |
+
nói_ra
|
| 1017 |
+
nói_riêng
|
| 1018 |
+
nói_rõ
|
| 1019 |
+
nói_thêm
|
| 1020 |
+
nói_thật
|
| 1021 |
+
nói_toẹt
|
| 1022 |
+
nói_trước
|
| 1023 |
+
nói_tốt
|
| 1024 |
+
nói_với
|
| 1025 |
+
nói_xa
|
| 1026 |
+
nói_ý
|
| 1027 |
+
nói_đến
|
| 1028 |
+
nói_đủ
|
| 1029 |
+
năm
|
| 1030 |
+
năm_tháng
|
| 1031 |
+
nơi
|
| 1032 |
+
nơi_nơi
|
| 1033 |
+
nước_bài
|
| 1034 |
+
nước_cùng
|
| 1035 |
+
nước_lên
|
| 1036 |
+
nước_nặng
|
| 1037 |
+
nước_quả
|
| 1038 |
+
nước_xuống
|
| 1039 |
+
nước_ăn
|
| 1040 |
+
nước_đến
|
| 1041 |
+
nấy
|
| 1042 |
+
nặng
|
| 1043 |
+
nặng_căn
|
| 1044 |
+
nặng_mình
|
| 1045 |
+
nặng_về
|
| 1046 |
+
nếu
|
| 1047 |
+
nếu_có
|
| 1048 |
+
nếu_cần
|
| 1049 |
+
nếu_không
|
| 1050 |
+
nếu_mà
|
| 1051 |
+
nếu_như
|
| 1052 |
+
nếu_thế
|
| 1053 |
+
nếu_vậy
|
| 1054 |
+
nếu_được
|
| 1055 |
+
nền
|
| 1056 |
+
nọ
|
| 1057 |
+
nớ
|
| 1058 |
+
nức_nở
|
| 1059 |
+
nữa
|
| 1060 |
+
nữa_khi
|
| 1061 |
+
nữa_là
|
| 1062 |
+
nữa_rồi
|
| 1063 |
+
oai_oái
|
| 1064 |
+
oái
|
| 1065 |
+
pho
|
| 1066 |
+
phè
|
| 1067 |
+
phè_phè
|
| 1068 |
+
phía
|
| 1069 |
+
phía_bên
|
| 1070 |
+
phía_bạn
|
| 1071 |
+
phía_dưới
|
| 1072 |
+
phía_sau
|
| 1073 |
+
phía_trong
|
| 1074 |
+
phía_trên
|
| 1075 |
+
phía_trước
|
| 1076 |
+
phóc
|
| 1077 |
+
phót
|
| 1078 |
+
phù_hợp
|
| 1079 |
+
phăn_phắt
|
| 1080 |
+
phương_chi
|
| 1081 |
+
phải
|
| 1082 |
+
phải_biết
|
| 1083 |
+
phải_chi
|
| 1084 |
+
phải_chăng
|
| 1085 |
+
phải_cách
|
| 1086 |
+
phải_cái
|
| 1087 |
+
phải_giờ
|
| 1088 |
+
phải_khi
|
| 1089 |
+
phải_không
|
| 1090 |
+
phải_lại
|
| 1091 |
+
phải_lời
|
| 1092 |
+
phải_người
|
| 1093 |
+
phải_như
|
| 1094 |
+
phải_rồi
|
| 1095 |
+
phải_tay
|
| 1096 |
+
phần
|
| 1097 |
+
phần_lớn
|
| 1098 |
+
phần_nhiều
|
| 1099 |
+
phần_nào
|
| 1100 |
+
phần_sau
|
| 1101 |
+
phần_việc
|
| 1102 |
+
phắt
|
| 1103 |
+
phỉ_phui
|
| 1104 |
+
phỏng
|
| 1105 |
+
phỏng_như
|
| 1106 |
+
phỏng_nước
|
| 1107 |
+
phỏng_theo
|
| 1108 |
+
phỏng_tính
|
| 1109 |
+
phốc
|
| 1110 |
+
phụt
|
| 1111 |
+
phứt
|
| 1112 |
+
qua
|
| 1113 |
+
qua_chuyện
|
| 1114 |
+
qua_khỏi
|
| 1115 |
+
qua_lại
|
| 1116 |
+
qua_lần
|
| 1117 |
+
qua_ngày
|
| 1118 |
+
qua_tay
|
| 1119 |
+
qua_thì
|
| 1120 |
+
qua_đi
|
| 1121 |
+
quan_trọng
|
| 1122 |
+
quan_trọng_vấn_đề
|
| 1123 |
+
quan_tâm
|
| 1124 |
+
quay
|
| 1125 |
+
quay_bước
|
| 1126 |
+
quay_lại
|
| 1127 |
+
quay_số
|
| 1128 |
+
quay_đi
|
| 1129 |
+
quá
|
| 1130 |
+
quá_bán
|
| 1131 |
+
quá_bộ
|
| 1132 |
+
quá_giờ
|
| 1133 |
+
quá_lời
|
| 1134 |
+
quá_mức
|
| 1135 |
+
quá_nhiều
|
| 1136 |
+
quá_tay
|
| 1137 |
+
quá_thì
|
| 1138 |
+
quá_tin
|
| 1139 |
+
quá_trình
|
| 1140 |
+
quá_tuổi
|
| 1141 |
+
quá_đáng
|
| 1142 |
+
quá_ư
|
| 1143 |
+
quả
|
| 1144 |
+
quả_là
|
| 1145 |
+
quả_thật
|
| 1146 |
+
quả_thế
|
| 1147 |
+
quả_vậy
|
| 1148 |
+
quận
|
| 1149 |
+
ra
|
| 1150 |
+
ra_bài
|
| 1151 |
+
ra_bộ
|
| 1152 |
+
ra_chơi
|
| 1153 |
+
ra_gì
|
| 1154 |
+
ra_lại
|
| 1155 |
+
ra_lời
|
| 1156 |
+
ra_ngôi
|
| 1157 |
+
ra_người
|
| 1158 |
+
ra_sao
|
| 1159 |
+
ra_tay
|
| 1160 |
+
ra_vào
|
| 1161 |
+
ra_ý
|
| 1162 |
+
ra_điều
|
| 1163 |
+
ra_đây
|
| 1164 |
+
ren_rén
|
| 1165 |
+
riu_ríu
|
| 1166 |
+
riêng
|
| 1167 |
+
riêng_từng
|
| 1168 |
+
riệt
|
| 1169 |
+
rày
|
| 1170 |
+
ráo
|
| 1171 |
+
ráo_cả
|
| 1172 |
+
ráo_nước
|
| 1173 |
+
ráo_trọi
|
| 1174 |
+
rén
|
| 1175 |
+
rén_bước
|
| 1176 |
+
rích
|
| 1177 |
+
rón_rén
|
| 1178 |
+
rõ
|
| 1179 |
+
rõ_là
|
| 1180 |
+
rõ_thật
|
| 1181 |
+
rút_cục
|
| 1182 |
+
răng
|
| 1183 |
+
răng_răng
|
| 1184 |
+
rất
|
| 1185 |
+
rất_lâu
|
| 1186 |
+
rằng
|
| 1187 |
+
rằng_là
|
| 1188 |
+
rốt_cuộc
|
| 1189 |
+
rốt_cục
|
| 1190 |
+
rồi
|
| 1191 |
+
rồi_nữa
|
| 1192 |
+
rồi_ra
|
| 1193 |
+
rồi_sao
|
| 1194 |
+
rồi_sau
|
| 1195 |
+
rồi_tay
|
| 1196 |
+
rồi_thì
|
| 1197 |
+
rồi_xem
|
| 1198 |
+
rồi_đây
|
| 1199 |
+
rứa
|
| 1200 |
+
sa_sả
|
| 1201 |
+
sang
|
| 1202 |
+
sang_năm
|
| 1203 |
+
sang_sáng
|
| 1204 |
+
sang_tay
|
| 1205 |
+
sao
|
| 1206 |
+
sao_bản
|
| 1207 |
+
sao_bằng
|
| 1208 |
+
sao_cho
|
| 1209 |
+
sao_vậy
|
| 1210 |
+
sao_đang
|
| 1211 |
+
sau
|
| 1212 |
+
sau_chót
|
| 1213 |
+
sau_cuối
|
| 1214 |
+
sau_cùng
|
| 1215 |
+
sau_hết
|
| 1216 |
+
sau_này
|
| 1217 |
+
sau_nữa
|
| 1218 |
+
sau_sau
|
| 1219 |
+
sau_đây
|
| 1220 |
+
sau_đó
|
| 1221 |
+
so
|
| 1222 |
+
so_với
|
| 1223 |
+
song_le
|
| 1224 |
+
suýt
|
| 1225 |
+
suýt_nữa
|
| 1226 |
+
sáng
|
| 1227 |
+
sáng_ngày
|
| 1228 |
+
sáng_rõ
|
| 1229 |
+
sáng_thế
|
| 1230 |
+
sáng_ý
|
| 1231 |
+
sì
|
| 1232 |
+
sì_sì
|
| 1233 |
+
sất
|
| 1234 |
+
sắp
|
| 1235 |
+
sắp_đặt
|
| 1236 |
+
sẽ
|
| 1237 |
+
sẽ_biết
|
| 1238 |
+
sẽ_hay
|
| 1239 |
+
số
|
| 1240 |
+
số_cho_biết
|
| 1241 |
+
số_cụ_thể
|
| 1242 |
+
số_loại
|
| 1243 |
+
số_là
|
| 1244 |
+
số_phần
|
| 1245 |
+
số_thiếu
|
| 1246 |
+
sốt_sột
|
| 1247 |
+
sớm
|
| 1248 |
+
sớm_ngày
|
| 1249 |
+
sở_dĩ
|
| 1250 |
+
sử_dụng
|
| 1251 |
+
sự
|
| 1252 |
+
sự_thế
|
| 1253 |
+
sự_việc
|
| 1254 |
+
tanh
|
| 1255 |
+
tanh_tanh
|
| 1256 |
+
tay
|
| 1257 |
+
tay_quay
|
| 1258 |
+
tha_hồ
|
| 1259 |
+
tha_hồ_chơi
|
| 1260 |
+
tha_hồ_ăn
|
| 1261 |
+
than_ôi
|
| 1262 |
+
thanh
|
| 1263 |
+
thanh_ba
|
| 1264 |
+
thanh_chuyển
|
| 1265 |
+
thanh_không
|
| 1266 |
+
thanh_thanh
|
| 1267 |
+
thanh_tính
|
| 1268 |
+
thanh_điều_kiện
|
| 1269 |
+
thanh_điểm
|
| 1270 |
+
thay_đổi
|
| 1271 |
+
thay_đổi_tình_trạng
|
| 1272 |
+
theo
|
| 1273 |
+
theo_bước
|
| 1274 |
+
theo_như
|
| 1275 |
+
theo_tin
|
| 1276 |
+
thi_thoảng
|
| 1277 |
+
thiếu
|
| 1278 |
+
thiếu_gì
|
| 1279 |
+
thiếu_điểm
|
| 1280 |
+
thoạt
|
| 1281 |
+
thoạt_nghe
|
| 1282 |
+
thoạt_nhiên
|
| 1283 |
+
thoắt
|
| 1284 |
+
thuần
|
| 1285 |
+
thuần_ái
|
| 1286 |
+
thuộc
|
| 1287 |
+
thuộc_bài
|
| 1288 |
+
thuộc_cách
|
| 1289 |
+
thuộc_lại
|
| 1290 |
+
thuộc_từ
|
| 1291 |
+
thà
|
| 1292 |
+
thà_là
|
| 1293 |
+
thà_rằng
|
| 1294 |
+
thành_ra
|
| 1295 |
+
thành_thử
|
| 1296 |
+
thái_quá
|
| 1297 |
+
tháng
|
| 1298 |
+
tháng_ngày
|
| 1299 |
+
tháng_năm
|
| 1300 |
+
tháng_tháng
|
| 1301 |
+
thêm
|
| 1302 |
+
thêm_chuyện
|
| 1303 |
+
thêm_giờ
|
| 1304 |
+
thêm_vào
|
| 1305 |
+
thì
|
| 1306 |
+
thì_giờ
|
| 1307 |
+
thì_là
|
| 1308 |
+
thì_phải
|
| 1309 |
+
thì_ra
|
| 1310 |
+
thì_thôi
|
| 1311 |
+
thình_lình
|
| 1312 |
+
thích
|
| 1313 |
+
thích_cứ
|
| 1314 |
+
thích_thuộc
|
| 1315 |
+
thích_tự
|
| 1316 |
+
thích_ý
|
| 1317 |
+
thím
|
| 1318 |
+
thôi
|
| 1319 |
+
thôi_việc
|
| 1320 |
+
thúng_thắng
|
| 1321 |
+
thương_ôi
|
| 1322 |
+
thường
|
| 1323 |
+
thường_bị
|
| 1324 |
+
thường_hay
|
| 1325 |
+
thường_khi
|
| 1326 |
+
thường_số
|
| 1327 |
+
thường_sự
|
| 1328 |
+
thường_thôi
|
| 1329 |
+
thường_thường
|
| 1330 |
+
thường_tính
|
| 1331 |
+
thường_tại
|
| 1332 |
+
thường_xuất_hiện
|
| 1333 |
+
thường_đến
|
| 1334 |
+
thảo_hèn
|
| 1335 |
+
thảo_nào
|
| 1336 |
+
thấp
|
| 1337 |
+
thấp_cơ
|
| 1338 |
+
thấp_thỏm
|
| 1339 |
+
thấp_xuống
|
| 1340 |
+
thấy
|
| 1341 |
+
thấy_tháng
|
| 1342 |
+
thẩy
|
| 1343 |
+
thậm
|
| 1344 |
+
thậm_chí
|
| 1345 |
+
thậm_cấp
|
| 1346 |
+
thậm_từ
|
| 1347 |
+
thật
|
| 1348 |
+
thật_chắc
|
| 1349 |
+
thật_là
|
| 1350 |
+
thật_lực
|
| 1351 |
+
thật_quả
|
| 1352 |
+
thật_ra
|
| 1353 |
+
thật_sự
|
| 1354 |
+
thật_thà
|
| 1355 |
+
thật_tốt
|
| 1356 |
+
thật_vậy
|
| 1357 |
+
thế
|
| 1358 |
+
thế_chuẩn_bị
|
| 1359 |
+
thế_là
|
| 1360 |
+
thế_lại
|
| 1361 |
+
thế_mà
|
| 1362 |
+
thế_nào
|
| 1363 |
+
thế_nên
|
| 1364 |
+
thế_ra
|
| 1365 |
+
thế_sự
|
| 1366 |
+
thế_thì
|
| 1367 |
+
thế_thôi
|
| 1368 |
+
thế_thường
|
| 1369 |
+
thế_thế
|
| 1370 |
+
thế_à
|
| 1371 |
+
thế_đó
|
| 1372 |
+
thếch
|
| 1373 |
+
thỉnh_thoảng
|
| 1374 |
+
thỏm
|
| 1375 |
+
thốc
|
| 1376 |
+
thốc_tháo
|
| 1377 |
+
thốt
|
| 1378 |
+
thốt_nhiên
|
| 1379 |
+
thốt_nói
|
| 1380 |
+
thốt_thôi
|
| 1381 |
+
thộc
|
| 1382 |
+
thời_gian
|
| 1383 |
+
thời_gian_sử_dụng
|
| 1384 |
+
thời_gian_tính
|
| 1385 |
+
thời_điểm
|
| 1386 |
+
thục_mạng
|
| 1387 |
+
thứ
|
| 1388 |
+
thứ_bản
|
| 1389 |
+
thứ_đến
|
| 1390 |
+
thửa
|
| 1391 |
+
thực_hiện
|
| 1392 |
+
thực_hiện_đúng
|
| 1393 |
+
thực_ra
|
| 1394 |
+
thực_sự
|
| 1395 |
+
thực_tế
|
| 1396 |
+
thực_vậy
|
| 1397 |
+
tin
|
| 1398 |
+
tin_thêm
|
| 1399 |
+
tin_vào
|
| 1400 |
+
tiếp_theo
|
| 1401 |
+
tiếp_tục
|
| 1402 |
+
tiếp_đó
|
| 1403 |
+
tiện_thể
|
| 1404 |
+
toà
|
| 1405 |
+
toé_khói
|
| 1406 |
+
toẹt
|
| 1407 |
+
trong
|
| 1408 |
+
trong_khi
|
| 1409 |
+
trong_lúc
|
| 1410 |
+
trong_mình
|
| 1411 |
+
trong_ngoài
|
| 1412 |
+
trong_này
|
| 1413 |
+
trong_số
|
| 1414 |
+
trong_vùng
|
| 1415 |
+
trong_đó
|
| 1416 |
+
trong_ấy
|
| 1417 |
+
tránh
|
| 1418 |
+
tránh_khỏi
|
| 1419 |
+
tránh_ra
|
| 1420 |
+
tránh_tình_trạng
|
| 1421 |
+
tránh_xa
|
| 1422 |
+
trên
|
| 1423 |
+
trên_bộ
|
| 1424 |
+
trên_dưới
|
| 1425 |
+
trước
|
| 1426 |
+
trước_hết
|
| 1427 |
+
trước_khi
|
| 1428 |
+
trước_kia
|
| 1429 |
+
trước_nay
|
| 1430 |
+
trước_ngày
|
| 1431 |
+
trước_nhất
|
| 1432 |
+
trước_sau
|
| 1433 |
+
trước_tiên
|
| 1434 |
+
trước_tuổi
|
| 1435 |
+
trước_đây
|
| 1436 |
+
trước_đó
|
| 1437 |
+
trả
|
| 1438 |
+
trả_của
|
| 1439 |
+
trả_lại
|
| 1440 |
+
trả_ngay
|
| 1441 |
+
trả_trước
|
| 1442 |
+
trếu_tráo
|
| 1443 |
+
trển
|
| 1444 |
+
trệt
|
| 1445 |
+
trệu_trạo
|
| 1446 |
+
trỏng
|
| 1447 |
+
trời_đất_ơi
|
| 1448 |
+
trở_thành
|
| 1449 |
+
trừ_phi
|
| 1450 |
+
trực_tiếp
|
| 1451 |
+
trực_tiếp_làm
|
| 1452 |
+
tuy
|
| 1453 |
+
tuy_có
|
| 1454 |
+
tuy_là
|
| 1455 |
+
tuy_nhiên
|
| 1456 |
+
tuy_rằng
|
| 1457 |
+
tuy_thế
|
| 1458 |
+
tuy_vậy
|
| 1459 |
+
tuy_đã
|
| 1460 |
+
tuyệt_nhiên
|
| 1461 |
+
tuần_tự
|
| 1462 |
+
tuốt_luốt
|
| 1463 |
+
tuốt_tuồn_tuột
|
| 1464 |
+
tuốt_tuột
|
| 1465 |
+
tuổi
|
| 1466 |
+
tuổi_cả
|
| 1467 |
+
tuổi_tôi
|
| 1468 |
+
tà_tà
|
| 1469 |
+
tên
|
| 1470 |
+
tên_chính
|
| 1471 |
+
tên_cái
|
| 1472 |
+
tên_họ
|
| 1473 |
+
tên_tự
|
| 1474 |
+
tênh
|
| 1475 |
+
tênh_tênh
|
| 1476 |
+
tìm
|
| 1477 |
+
tìm_bạn
|
| 1478 |
+
tìm_cách
|
| 1479 |
+
tìm_hiểu
|
| 1480 |
+
tìm_ra
|
| 1481 |
+
tình_trạng
|
| 1482 |
+
tính
|
| 1483 |
+
tính_căn
|
| 1484 |
+
tính_phỏng
|
| 1485 |
+
tính_từ
|
| 1486 |
+
tít_mù
|
| 1487 |
+
tò_te
|
| 1488 |
+
tôi
|
| 1489 |
+
tôi_con
|
| 1490 |
+
tông_tốc
|
| 1491 |
+
tù_tì
|
| 1492 |
+
tăm_tắp
|
| 1493 |
+
tăng
|
| 1494 |
+
tăng_chúng
|
| 1495 |
+
tăng_cấp
|
| 1496 |
+
tăng_giảm
|
| 1497 |
+
tăng_thêm
|
| 1498 |
+
tăng_thế
|
| 1499 |
+
tại
|
| 1500 |
+
tại_lòng
|
| 1501 |
+
tại_nơi
|
| 1502 |
+
tại_sao
|
| 1503 |
+
tại_tôi
|
| 1504 |
+
tại_vì
|
| 1505 |
+
tại_đâu
|
| 1506 |
+
tại_đây
|
| 1507 |
+
tại_đó
|
| 1508 |
+
tạo
|
| 1509 |
+
tạo_cơ_hội
|
| 1510 |
+
tạo_nên
|
| 1511 |
+
tạo_ra
|
| 1512 |
+
tạo_ý
|
| 1513 |
+
tạo_điều_kiện
|
| 1514 |
+
tấm
|
| 1515 |
+
tấm_bản
|
| 1516 |
+
tấm_các
|
| 1517 |
+
tấn
|
| 1518 |
+
tấn_tới
|
| 1519 |
+
tất_cả
|
| 1520 |
+
tất_cả_bao_nhiêu
|
| 1521 |
+
tất_thảy
|
| 1522 |
+
tất_tần_tật
|
| 1523 |
+
tất_tật
|
| 1524 |
+
tập_trung
|
| 1525 |
+
tắp
|
| 1526 |
+
tắp_lự
|
| 1527 |
+
tắp_tắp
|
| 1528 |
+
tọt
|
| 1529 |
+
tỏ_ra
|
| 1530 |
+
tỏ_vẻ
|
| 1531 |
+
tốc_tả
|
| 1532 |
+
tối_ư
|
| 1533 |
+
tốt
|
| 1534 |
+
tốt_bạn
|
| 1535 |
+
tốt_bộ
|
| 1536 |
+
tốt_hơn
|
| 1537 |
+
tốt_mối
|
| 1538 |
+
tốt_ngày
|
| 1539 |
+
tột
|
| 1540 |
+
tột_cùng
|
| 1541 |
+
tớ
|
| 1542 |
+
tới
|
| 1543 |
+
tới_gần
|
| 1544 |
+
tới_mức
|
| 1545 |
+
tới_nơi
|
| 1546 |
+
tới_thì
|
| 1547 |
+
tức_thì
|
| 1548 |
+
tức_tốc
|
| 1549 |
+
từ
|
| 1550 |
+
từ_căn
|
| 1551 |
+
từ_giờ
|
| 1552 |
+
từ_khi
|
| 1553 |
+
từ_loại
|
| 1554 |
+
từ_nay
|
| 1555 |
+
từ_thế
|
| 1556 |
+
từ_tính
|
| 1557 |
+
từ_tại
|
| 1558 |
+
từ_từ
|
| 1559 |
+
từ_ái
|
| 1560 |
+
từ_điều
|
| 1561 |
+
từ_đó
|
| 1562 |
+
từ_ấy
|
| 1563 |
+
từng
|
| 1564 |
+
từng_cái
|
| 1565 |
+
từng_giờ
|
| 1566 |
+
từng_nhà
|
| 1567 |
+
từng_phần
|
| 1568 |
+
từng_thời_gian
|
| 1569 |
+
từng_đơn_vị
|
| 1570 |
+
từng_ấy
|
| 1571 |
+
tự
|
| 1572 |
+
tự_cao
|
| 1573 |
+
tự_khi
|
| 1574 |
+
tự_lượng
|
| 1575 |
+
tự_tính
|
| 1576 |
+
tự_tạo
|
| 1577 |
+
tự_vì
|
| 1578 |
+
tự_ý
|
| 1579 |
+
tự_ăn
|
| 1580 |
+
tựu_trung
|
| 1581 |
+
veo
|
| 1582 |
+
veo_veo
|
| 1583 |
+
việc
|
| 1584 |
+
việc_gì
|
| 1585 |
+
vung_thiên_địa
|
| 1586 |
+
vung_tàn_tán
|
| 1587 |
+
vung_tán_tàn
|
| 1588 |
+
và
|
| 1589 |
+
vài
|
| 1590 |
+
vài_ba
|
| 1591 |
+
vài_người
|
| 1592 |
+
vài_nhà
|
| 1593 |
+
vài_nơi
|
| 1594 |
+
vài_tên
|
| 1595 |
+
vài_điều
|
| 1596 |
+
vào
|
| 1597 |
+
vào_gặp
|
| 1598 |
+
vào_khoảng
|
| 1599 |
+
vào_lúc
|
| 1600 |
+
vào_vùng
|
| 1601 |
+
vào_đến
|
| 1602 |
+
vâng
|
| 1603 |
+
vâng_chịu
|
| 1604 |
+
vâng_dạ
|
| 1605 |
+
vâng_vâng
|
| 1606 |
+
vâng_ý
|
| 1607 |
+
vèo
|
| 1608 |
+
vèo_vèo
|
| 1609 |
+
vì
|
| 1610 |
+
vì_chưng
|
| 1611 |
+
vì_rằng
|
| 1612 |
+
vì_sao
|
| 1613 |
+
vì_thế
|
| 1614 |
+
vì_vậy
|
| 1615 |
+
ví_bằng
|
| 1616 |
+
ví_dù
|
| 1617 |
+
ví_phỏng
|
| 1618 |
+
ví_thử
|
| 1619 |
+
vô_hình_trung
|
| 1620 |
+
vô_kể
|
| 1621 |
+
vô_luận
|
| 1622 |
+
vô_vàn
|
| 1623 |
+
vùng
|
| 1624 |
+
vùng_lên
|
| 1625 |
+
vùng_nước
|
| 1626 |
+
văng_tê
|
| 1627 |
+
vượt
|
| 1628 |
+
vượt_khỏi
|
| 1629 |
+
vượt_quá
|
| 1630 |
+
vạn_nhất
|
| 1631 |
+
vả_chăng
|
| 1632 |
+
vả_lại
|
| 1633 |
+
vấn_đề
|
| 1634 |
+
vấn_đề_quan_trọng
|
| 1635 |
+
vẫn
|
| 1636 |
+
vẫn_thế
|
| 1637 |
+
vậy
|
| 1638 |
+
vậy_là
|
| 1639 |
+
vậy_mà
|
| 1640 |
+
vậy_nên
|
| 1641 |
+
vậy_ra
|
| 1642 |
+
vậy_thì
|
| 1643 |
+
vậy_ư
|
| 1644 |
+
về
|
| 1645 |
+
về_không
|
| 1646 |
+
về_phần
|
| 1647 |
+
về_sau
|
| 1648 |
+
về_tay
|
| 1649 |
+
vị_trí
|
| 1650 |
+
vị_tất
|
| 1651 |
+
vốn_dĩ
|
| 1652 |
+
với
|
| 1653 |
+
với_lại
|
| 1654 |
+
với_nhau
|
| 1655 |
+
vở
|
| 1656 |
+
vụt
|
| 1657 |
+
vừa
|
| 1658 |
+
vừa_khi
|
| 1659 |
+
vừa_lúc
|
| 1660 |
+
vừa_mới
|
| 1661 |
+
vừa_qua
|
| 1662 |
+
vừa_rồi
|
| 1663 |
+
vừa_vừa
|
| 1664 |
+
xa
|
| 1665 |
+
xa_cách
|
| 1666 |
+
xa_gần
|
| 1667 |
+
xa_nhà
|
| 1668 |
+
xa_tanh
|
| 1669 |
+
xa_tắp
|
| 1670 |
+
xa_xa
|
| 1671 |
+
xa_xả
|
| 1672 |
+
xem
|
| 1673 |
+
xem_lại
|
| 1674 |
+
xem_ra
|
| 1675 |
+
xem_số
|
| 1676 |
+
xin
|
| 1677 |
+
xin_gặp
|
| 1678 |
+
xin_vâng
|
| 1679 |
+
xiết_bao
|
| 1680 |
+
xon_xón
|
| 1681 |
+
xoành_xoạch
|
| 1682 |
+
xoét
|
| 1683 |
+
xoẳn
|
| 1684 |
+
xoẹt
|
| 1685 |
+
xuất_kì_bất_ý
|
| 1686 |
+
xuất_kỳ_bất_ý
|
| 1687 |
+
xuể
|
| 1688 |
+
xuống
|
| 1689 |
+
xăm_xúi
|
| 1690 |
+
xăm_xăm
|
| 1691 |
+
xăm_xắm
|
| 1692 |
+
xảy_ra
|
| 1693 |
+
xềnh_xệch
|
| 1694 |
+
xệp
|
| 1695 |
+
xử_lý
|
| 1696 |
+
yêu_cầu
|
| 1697 |
+
à
|
| 1698 |
+
à_này
|
| 1699 |
+
à_ơi
|
| 1700 |
+
ào
|
| 1701 |
+
ào_vào
|
| 1702 |
+
ào_ào
|
| 1703 |
+
á
|
| 1704 |
+
á_à
|
| 1705 |
+
ái
|
| 1706 |
+
ái_chà
|
| 1707 |
+
ái_dà
|
| 1708 |
+
áng
|
| 1709 |
+
áng_như
|
| 1710 |
+
âu_là
|
| 1711 |
+
ít
|
| 1712 |
+
ít_biết
|
| 1713 |
+
ít_có
|
| 1714 |
+
ít_hơn
|
| 1715 |
+
ít_khi
|
| 1716 |
+
ít_lâu
|
| 1717 |
+
ít_nhiều
|
| 1718 |
+
ít_nhất
|
| 1719 |
+
ít_nữa
|
| 1720 |
+
ít_quá
|
| 1721 |
+
ít_ra
|
| 1722 |
+
ít_thôi
|
| 1723 |
+
ít_thấy
|
| 1724 |
+
ô_hay
|
| 1725 |
+
ô_hô
|
| 1726 |
+
ô_kê
|
| 1727 |
+
ô_kìa
|
| 1728 |
+
ôi_chao
|
| 1729 |
+
ôi_thôi
|
| 1730 |
+
ông
|
| 1731 |
+
ông_nhỏ
|
| 1732 |
+
ông_tạo
|
| 1733 |
+
ông_từ
|
| 1734 |
+
ông_ấy
|
| 1735 |
+
ông_ổng
|
| 1736 |
+
úi
|
| 1737 |
+
úi_chà
|
| 1738 |
+
úi_dào
|
| 1739 |
+
ý
|
| 1740 |
+
ý_chừng
|
| 1741 |
+
ý_da
|
| 1742 |
+
ý_hoặc
|
| 1743 |
+
ăn
|
| 1744 |
+
ăn_chung
|
| 1745 |
+
ăn_chắc
|
| 1746 |
+
ăn_chịu
|
| 1747 |
+
ăn_cuộc
|
| 1748 |
+
ăn_hết
|
| 1749 |
+
ăn_hỏi
|
| 1750 |
+
ăn_làm
|
| 1751 |
+
ăn_người
|
| 1752 |
+
ăn_ngồi
|
| 1753 |
+
ăn_quá
|
| 1754 |
+
ăn_riêng
|
| 1755 |
+
ăn_tay
|
| 1756 |
+
ăn_trên
|
| 1757 |
+
ăn_về
|
| 1758 |
+
đang
|
| 1759 |
+
đang_tay
|
| 1760 |
+
đang_thì
|
| 1761 |
+
điều
|
| 1762 |
+
điều_gì
|
| 1763 |
+
điều_kiện
|
| 1764 |
+
điểm
|
| 1765 |
+
điểm_chính
|
| 1766 |
+
điểm_gặp
|
| 1767 |
+
điểm_đầu_tiên
|
| 1768 |
+
đành_đạch
|
| 1769 |
+
đáng
|
| 1770 |
+
đáng_kể
|
| 1771 |
+
đáng_lí
|
| 1772 |
+
đáng_lý
|
| 1773 |
+
đáng_lẽ
|
| 1774 |
+
đáng_số
|
| 1775 |
+
đánh_đùng
|
| 1776 |
+
đáo_để
|
| 1777 |
+
đâu
|
| 1778 |
+
đâu_có
|
| 1779 |
+
đâu_cũng
|
| 1780 |
+
đâu_như
|
| 1781 |
+
đâu_nào
|
| 1782 |
+
đâu_phải
|
| 1783 |
+
đâu_đâu
|
| 1784 |
+
đâu_đây
|
| 1785 |
+
đâu_đó
|
| 1786 |
+
đây
|
| 1787 |
+
đây_này
|
| 1788 |
+
đây_rồi
|
| 1789 |
+
đây_đó
|
| 1790 |
+
đã
|
| 1791 |
+
đã_hay
|
| 1792 |
+
đã_không
|
| 1793 |
+
đã_là
|
| 1794 |
+
đã_lâu
|
| 1795 |
+
đã_thế
|
| 1796 |
+
đã_vậy
|
| 1797 |
+
đã_đủ
|
| 1798 |
+
đó
|
| 1799 |
+
đó_đây
|
| 1800 |
+
đúng
|
| 1801 |
+
đúng_ngày
|
| 1802 |
+
đúng_ra
|
| 1803 |
+
đúng_tuổi
|
| 1804 |
+
đúng_với
|
| 1805 |
+
đơn_vị
|
| 1806 |
+
đưa
|
| 1807 |
+
đưa_cho
|
| 1808 |
+
đưa_chuyện
|
| 1809 |
+
đưa_em
|
| 1810 |
+
đưa_ra
|
| 1811 |
+
đưa_tay
|
| 1812 |
+
đưa_tin
|
| 1813 |
+
đưa_tới
|
| 1814 |
+
đưa_vào
|
| 1815 |
+
đưa_về
|
| 1816 |
+
đưa_xuống
|
| 1817 |
+
đưa_đến
|
| 1818 |
+
được
|
| 1819 |
+
được_cái
|
| 1820 |
+
được_lời
|
| 1821 |
+
được_nước
|
| 1822 |
+
được_tin
|
| 1823 |
+
đại_loại
|
| 1824 |
+
đại_phàm
|
| 1825 |
+
đại_để
|
| 1826 |
+
đạt
|
| 1827 |
+
đảm_bảo
|
| 1828 |
+
đầu_tiên
|
| 1829 |
+
đầy
|
| 1830 |
+
đầy_năm
|
| 1831 |
+
đầy_phè
|
| 1832 |
+
đầy_tuổi
|
| 1833 |
+
đặc_biệt
|
| 1834 |
+
đặt
|
| 1835 |
+
đặt_làm
|
| 1836 |
+
đặt_mình
|
| 1837 |
+
đặt_mức
|
| 1838 |
+
đặt_ra
|
| 1839 |
+
đặt_trước
|
| 1840 |
+
đặt_để
|
| 1841 |
+
đến
|
| 1842 |
+
đến_bao_giờ
|
| 1843 |
+
đến_cùng
|
| 1844 |
+
đến_cùng_cực
|
| 1845 |
+
đến_cả
|
| 1846 |
+
đến_giờ
|
| 1847 |
+
đến_gần
|
| 1848 |
+
đến_hay
|
| 1849 |
+
đến_khi
|
| 1850 |
+
đến_lúc
|
| 1851 |
+
đến_lời
|
| 1852 |
+
đến_nay
|
| 1853 |
+
đến_ngày
|
| 1854 |
+
đến_nơi
|
| 1855 |
+
đến_nỗi
|
| 1856 |
+
đến_thì
|
| 1857 |
+
đến_thế
|
| 1858 |
+
đến_tuổi
|
| 1859 |
+
đến_xem
|
| 1860 |
+
đến_điều
|
| 1861 |
+
đến_đâu
|
| 1862 |
+
đều
|
| 1863 |
+
đều_bước
|
| 1864 |
+
đều_nhau
|
| 1865 |
+
đều_đều
|
| 1866 |
+
để
|
| 1867 |
+
để_cho
|
| 1868 |
+
để_giống
|
| 1869 |
+
để_không
|
| 1870 |
+
để_lòng
|
| 1871 |
+
để_lại
|
| 1872 |
+
để_mà
|
| 1873 |
+
để_phần
|
| 1874 |
+
để_được
|
| 1875 |
+
để_đến_nỗi
|
| 1876 |
+
đối_với
|
| 1877 |
+
đồng_thời
|
| 1878 |
+
đủ
|
| 1879 |
+
đủ_dùng
|
| 1880 |
+
đủ_nơi
|
| 1881 |
+
đủ_số
|
| 1882 |
+
đủ_điều
|
| 1883 |
+
đủ_điểm
|
| 1884 |
+
ơ
|
| 1885 |
+
ơ_hay
|
| 1886 |
+
ơ_kìa
|
| 1887 |
+
ơi
|
| 1888 |
+
ơi_là
|
| 1889 |
+
ư
|
| 1890 |
+
ạ
|
| 1891 |
+
ạ_ơi
|
| 1892 |
+
ấy
|
| 1893 |
+
ấy_là
|
| 1894 |
+
ầu_ơ
|
| 1895 |
+
ắt
|
| 1896 |
+
ắt_hẳn
|
| 1897 |
+
ắt_là
|
| 1898 |
+
ắt_phải
|
| 1899 |
+
ắt_thật
|
| 1900 |
+
ối_dào
|
| 1901 |
+
ối_giời
|
| 1902 |
+
ối_giời_ơi
|
| 1903 |
+
ồ
|
| 1904 |
+
ồ_ồ
|
| 1905 |
+
ổng
|
| 1906 |
+
ớ
|
| 1907 |
+
ớ_này
|
| 1908 |
+
ờ
|
| 1909 |
+
ờ_ờ
|
| 1910 |
+
ở
|
| 1911 |
+
ở_lại
|
| 1912 |
+
ở_như
|
| 1913 |
+
ở_nhờ
|
| 1914 |
+
ở_năm
|
| 1915 |
+
ở_trên
|
| 1916 |
+
ở_vào
|
| 1917 |
+
ở_đây
|
| 1918 |
+
ở_đó
|
| 1919 |
+
ở_được
|
| 1920 |
+
ủa
|
| 1921 |
+
ứ_hự
|
| 1922 |
+
ứ_ừ
|
| 1923 |
+
ừ
|
| 1924 |
+
ừ_nhé
|
| 1925 |
+
ừ_thì
|
| 1926 |
+
ừ_ào
|
| 1927 |
+
ừ_ừ
|
| 1928 |
+
ử
|
| 1929 |
+
Chỉ
|
| 1930 |
+
Các
|
| 1931 |
+
Có
|
| 1932 |
+
Cần
|
| 1933 |
+
Nhưng
|
| 1934 |
+
Tuy_nhiên
|
| 1935 |
+
Từ
|
| 1936 |
+
Cũng
|
| 1937 |
+
từ
|
| 1938 |
+
đi
|
| 1939 |
+
đến
|
| 1940 |
+
Cho_dù
|
| 1941 |
+
Chủ_yếu
|
| 1942 |
+
Còn
|
| 1943 |
+
Có_lẽ
|
| 1944 |
+
Có_thể
|
| 1945 |
+
Dù
|
| 1946 |
+
Dĩ_nhiên
|
| 1947 |
+
Những
|
| 1948 |
+
Và
|
| 1949 |
+
Vì
|
| 1950 |
+
Tất_nhiên
|
| 1951 |
+
cho_dù
|
| 1952 |
+
có_lẽ
|
| 1953 |
+
lắm
|
| 1954 |
+
Hiện_nay
|
| 1955 |
+
Tại_đây
|
| 1956 |
+
Như_vậy
|
| 1957 |
+
Từ
|
| 1958 |
+
Vậy
|
| 1959 |
+
Ở
|
| 1960 |
+
Bởi
|
| 1961 |
+
Theo
|
| 1962 |
+
Trên
|
| 1963 |
+
Việc
|
| 1964 |
+
Do_đó
|
| 1965 |
+
Hơn_nữa
|
| 1966 |
+
Trong
|
| 1967 |
+
Bên
|
| 1968 |
+
Cùng
|
| 1969 |
+
Cả
|
| 1970 |
+
ây
|
| 1971 |
+
Khi
|
| 1972 |
+
Sau
|
| 1973 |
+
Mỗi
|
| 1974 |
+
Về
|
| 1975 |
+
Không_chỉ
|
| 1976 |
+
Mặc_dù
|
| 1977 |
+
mặc_dù
|
| 1978 |
+
Nhiều
|
| 1979 |
+
Như
|
| 1980 |
+
Do
|
| 1981 |
+
Nếu
|
| 1982 |
+
Nếu_như
|
| 1983 |
+
Hoặc
|
| 1984 |
+
Nhờ
|
| 1985 |
+
Hiện
|
| 1986 |
+
Hiện_tại
|
| 1987 |
+
hiện
|
| 1988 |
+
cạnh
|
| 1989 |
+
Xung_quanh
|
| 1990 |
+
tóm_lại
|
| 1991 |
+
Cho
|
| 1992 |
+
Sau_này
|
| 1993 |
+
Vào
|
| 1994 |
+
ngày_nay
|
| 1995 |
+
chung_quanh
|
| 1996 |
+
Qua
|
| 1997 |
+
Thông_qua
|
| 1998 |
+
bao_gồm
|