{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Part-of-Speech Recognition" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This tutorial is available as an IPython notebook at [Malaya/example/part-of-speech](https://github.com/huseinzol05/Malaya/tree/master/example/part-of-speech).\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This module only trained on standard language structure, so it is not save to use it for local language structure.\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.94 s, sys: 1.17 s, total: 7.11 s\n", "Wall time: 8.41 s\n" ] } ], "source": [ "%%time\n", "import malaya" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Models accuracy\n", "\n", "We use `sklearn.metrics.classification_report` for accuracy reporting, check at https://malaya.readthedocs.io/en/latest/models-accuracy.html#pos-recognition" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Describe supported POS" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TagDescription
0ADJAdjective, kata sifat
1ADPAdposition
2ADVAdverb, kata keterangan
3ADXAuxiliary verb, kata kerja tambahan
4CCONJCoordinating conjuction, kata hubung
5DETDeterminer, kata penentu
6NOUNNoun, kata nama
7NUMNumber, nombor
8PARTParticle
9PRONPronoun, kata ganti
10PROPNProper noun, kata ganti nama khas
11SCONJSubordinating conjunction
12SYMSymbol
13VERBVerb, kata kerja
14XOther
\n", "
" ], "text/plain": [ " Tag Description\n", "0 ADJ Adjective, kata sifat\n", "1 ADP Adposition\n", "2 ADV Adverb, kata keterangan\n", "3 ADX Auxiliary verb, kata kerja tambahan\n", "4 CCONJ Coordinating conjuction, kata hubung\n", "5 DET Determiner, kata penentu\n", "6 NOUN Noun, kata nama\n", "7 NUM Number, nombor\n", "8 PART Particle\n", "9 PRON Pronoun, kata ganti\n", "10 PROPN Proper noun, kata ganti nama khas\n", "11 SCONJ Subordinating conjunction\n", "12 SYM Symbol\n", "13 VERB Verb, kata kerja\n", "14 X Other" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "malaya.pos.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### List available Transformer POS models" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:root:tested on 20% test set.\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Size (MB)Quantized Size (MB)macro precisionmacro recallmacro f1-score
bert426.4111.000.932800.931290.93181
tiny-bert57.715.400.928100.926490.92704
albert48.712.800.931990.919480.92547
tiny-albert22.45.980.905790.895010.90002
xlnet446.6118.000.933030.932220.93236
alxlnet46.813.300.927320.930460.92819
\n", "
" ], "text/plain": [ " Size (MB) Quantized Size (MB) macro precision macro recall \\\n", "bert 426.4 111.00 0.93280 0.93129 \n", "tiny-bert 57.7 15.40 0.92810 0.92649 \n", "albert 48.7 12.80 0.93199 0.91948 \n", "tiny-albert 22.4 5.98 0.90579 0.89501 \n", "xlnet 446.6 118.00 0.93303 0.93222 \n", "alxlnet 46.8 13.30 0.92732 0.93046 \n", "\n", " macro f1-score \n", "bert 0.93181 \n", "tiny-bert 0.92704 \n", "albert 0.92547 \n", "tiny-albert 0.90002 \n", "xlnet 0.93236 \n", "alxlnet 0.92819 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "malaya.pos.available_transformer()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "string = 'KUALA LUMPUR: Sempena sambutan Aidilfitri minggu depan, Perdana Menteri Tun Dr Mahathir Mohamad dan Menteri Pengangkutan Anthony Loke Siew Fook menitipkan pesanan khas kepada orang ramai yang mahu pulang ke kampung halaman masing-masing. Dalam video pendek terbitan Jabatan Keselamatan Jalan Raya (JKJR) itu, Dr Mahathir menasihati mereka supaya berhenti berehat dan tidur sebentar sekiranya mengantuk ketika memandu.'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load Transformer model\n", "\n", "```python\n", "def transformer(model: str = 'xlnet', quantized: bool = False, **kwargs):\n", " \"\"\"\n", " Load Transformer POS Tagging model, transfer learning Transformer + CRF.\n", "\n", " Parameters\n", " ----------\n", " model : str, optional (default='bert')\n", " Model architecture supported. Allowed values:\n", "\n", " * ``'bert'`` - Google BERT BASE parameters.\n", " * ``'tiny-bert'`` - Google BERT TINY parameters.\n", " * ``'albert'`` - Google ALBERT BASE parameters.\n", " * ``'tiny-albert'`` - Google ALBERT TINY parameters.\n", " * ``'xlnet'`` - Google XLNET BASE parameters.\n", " * ``'alxlnet'`` - Malaya ALXLNET BASE parameters.\n", "\n", " quantized : bool, optional (default=False)\n", " if True, will load 8-bit quantized model. \n", " Quantized model not necessary faster, totally depends on the machine.\n", "\n", " Returns\n", " -------\n", " result : malaya.supervised.tag.transformer function\n", " \"\"\"\n", "```" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:From /Users/huseinzolkepli/Documents/Malaya/malaya/function/__init__.py:112: The name tf.gfile.GFile is deprecated. Please use tf.io.gfile.GFile instead.\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:tensorflow:From /Users/huseinzolkepli/Documents/Malaya/malaya/function/__init__.py:112: The name tf.gfile.GFile is deprecated. Please use tf.io.gfile.GFile instead.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:From /Users/huseinzolkepli/Documents/Malaya/malaya/function/__init__.py:114: The name tf.GraphDef is deprecated. Please use tf.compat.v1.GraphDef instead.\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:tensorflow:From /Users/huseinzolkepli/Documents/Malaya/malaya/function/__init__.py:114: The name tf.GraphDef is deprecated. Please use tf.compat.v1.GraphDef instead.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:From /Users/huseinzolkepli/Documents/tf-1.15/env/lib/python3.7/site-packages/albert/tokenization.py:240: The name tf.logging.info is deprecated. Please use tf.compat.v1.logging.info instead.\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:tensorflow:From /Users/huseinzolkepli/Documents/tf-1.15/env/lib/python3.7/site-packages/albert/tokenization.py:240: The name tf.logging.info is deprecated. Please use tf.compat.v1.logging.info instead.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:loading sentence piece model\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:loading sentence piece model\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:From /Users/huseinzolkepli/Documents/Malaya/malaya/function/__init__.py:107: The name tf.InteractiveSession is deprecated. Please use tf.compat.v1.InteractiveSession instead.\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:tensorflow:From /Users/huseinzolkepli/Documents/Malaya/malaya/function/__init__.py:107: The name tf.InteractiveSession is deprecated. Please use tf.compat.v1.InteractiveSession instead.\n", "\n" ] } ], "source": [ "model = malaya.pos.transformer(model = 'albert')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load Quantized model\n", "\n", "To load 8-bit quantized model, simply pass `quantized = True`, default is `False`.\n", "\n", "We can expect slightly accuracy drop from quantized model, and not necessary faster than normal 32-bit float model, totally depends on machine." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:root:Load quantized model will cause accuracy drop.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:loading sentence piece model\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:loading sentence piece model\n" ] } ], "source": [ "quantized_model = malaya.pos.transformer(model = 'albert', quantized = True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Predict\n", "\n", "```python\n", "def predict(self, string: str):\n", " \"\"\"\n", " Tag a string.\n", "\n", " Parameters\n", " ----------\n", " string : str\n", "\n", " Returns\n", " -------\n", " result: Tuple[str, str]\n", " \"\"\"\n", "```" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('KUALA', 'PROPN'),\n", " ('LUMPUR:', 'PROPN'),\n", " ('Sempena', 'ADP'),\n", " ('sambutan', 'NOUN'),\n", " ('Aidilfitri', 'NOUN'),\n", " ('minggu', 'NOUN'),\n", " ('depan,', 'ADJ'),\n", " ('Perdana', 'PROPN'),\n", " ('Menteri', 'PROPN'),\n", " ('Tun', 'PROPN'),\n", " ('Dr', 'PROPN'),\n", " ('Mahathir', 'PROPN'),\n", " ('Mohamad', 'PROPN'),\n", " ('dan', 'CCONJ'),\n", " ('Menteri', 'PROPN'),\n", " ('Pengangkutan', 'PROPN'),\n", " ('Anthony', 'PROPN'),\n", " ('Loke', 'PROPN'),\n", " ('Siew', 'PROPN'),\n", " ('Fook', 'PROPN'),\n", " ('menitipkan', 'VERB'),\n", " ('pesanan', 'NOUN'),\n", " ('khas', 'ADJ'),\n", " ('kepada', 'ADP'),\n", " ('orang', 'NOUN'),\n", " ('ramai', 'ADJ'),\n", " ('yang', 'PRON'),\n", " ('mahu', 'ADV'),\n", " ('pulang', 'VERB'),\n", " ('ke', 'ADP'),\n", " ('kampung', 'NOUN'),\n", " ('halaman', 'NOUN'),\n", " ('masing-masing.', 'DET'),\n", " ('Dalam', 'ADP'),\n", " ('video', 'NOUN'),\n", " ('pendek', 'ADJ'),\n", " ('terbitan', 'NOUN'),\n", " ('Jabatan', 'PROPN'),\n", " ('Keselamatan', 'PROPN'),\n", " ('Jalan', 'PROPN'),\n", " ('Raya', 'PROPN'),\n", " ('(JKJR)', 'PUNCT'),\n", " ('itu,', 'DET'),\n", " ('Dr', 'PROPN'),\n", " ('Mahathir', 'PROPN'),\n", " ('menasihati', 'VERB'),\n", " ('mereka', 'PRON'),\n", " ('supaya', 'SCONJ'),\n", " ('berhenti', 'VERB'),\n", " ('berehat', 'VERB'),\n", " ('dan', 'CCONJ'),\n", " ('tidur', 'VERB'),\n", " ('sebentar', 'NOUN'),\n", " ('sekiranya', 'SCONJ'),\n", " ('mengantuk', 'ADJ'),\n", " ('ketika', 'SCONJ'),\n", " ('memandu.', 'VERB')]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.predict(string)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[('KUALA', 'PROPN'),\n", " ('LUMPUR:', 'PROPN'),\n", " ('Sempena', 'ADP'),\n", " ('sambutan', 'NOUN'),\n", " ('Aidilfitri', 'NOUN'),\n", " ('minggu', 'NOUN'),\n", " ('depan,', 'ADJ'),\n", " ('Perdana', 'PROPN'),\n", " ('Menteri', 'PROPN'),\n", " ('Tun', 'PROPN'),\n", " ('Dr', 'PROPN'),\n", " ('Mahathir', 'PROPN'),\n", " ('Mohamad', 'PROPN'),\n", " ('dan', 'CCONJ'),\n", " ('Menteri', 'PROPN'),\n", " ('Pengangkutan', 'PROPN'),\n", " ('Anthony', 'PROPN'),\n", " ('Loke', 'PROPN'),\n", " ('Siew', 'PROPN'),\n", " ('Fook', 'PROPN'),\n", " ('menitipkan', 'VERB'),\n", " ('pesanan', 'NOUN'),\n", " ('khas', 'ADJ'),\n", " ('kepada', 'ADP'),\n", " ('orang', 'NOUN'),\n", " ('ramai', 'ADJ'),\n", " ('yang', 'PRON'),\n", " ('mahu', 'ADV'),\n", " ('pulang', 'VERB'),\n", " ('ke', 'ADP'),\n", " ('kampung', 'NOUN'),\n", " ('halaman', 'NOUN'),\n", " ('masing-masing.', 'DET'),\n", " ('Dalam', 'ADP'),\n", " ('video', 'NOUN'),\n", " ('pendek', 'ADJ'),\n", " ('terbitan', 'NOUN'),\n", " ('Jabatan', 'PROPN'),\n", " ('Keselamatan', 'PROPN'),\n", " ('Jalan', 'PROPN'),\n", " ('Raya', 'PROPN'),\n", " ('(JKJR)', 'PUNCT'),\n", " ('itu,', 'DET'),\n", " ('Dr', 'PROPN'),\n", " ('Mahathir', 'PROPN'),\n", " ('menasihati', 'VERB'),\n", " ('mereka', 'PRON'),\n", " ('supaya', 'SCONJ'),\n", " ('berhenti', 'VERB'),\n", " ('berehat', 'VERB'),\n", " ('dan', 'CCONJ'),\n", " ('tidur', 'VERB'),\n", " ('sebentar', 'NOUN'),\n", " ('sekiranya', 'SCONJ'),\n", " ('mengantuk', 'ADJ'),\n", " ('ketika', 'SCONJ'),\n", " ('memandu.', 'VERB')]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "quantized_model.predict(string)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Group similar tags\n", "\n", "```python\n", "def analyze(self, string: str):\n", " \"\"\"\n", " Analyze a string.\n", "\n", " Parameters\n", " ----------\n", " string : str\n", "\n", " Returns\n", " -------\n", " result: {'words': List[str], 'tags': [{'text': 'text', 'type': 'location', 'score': 1.0, 'beginOffset': 0, 'endOffset': 1}]}\n", " \"\"\"\n", "```" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'words': ['KUALA',\n", " 'LUMPUR:',\n", " 'Sempena',\n", " 'sambutan',\n", " 'Aidilfitri',\n", " 'minggu',\n", " 'depan,',\n", " 'Perdana',\n", " 'Menteri',\n", " 'Tun',\n", " 'Dr',\n", " 'Mahathir',\n", " 'Mohamad',\n", " 'dan',\n", " 'Menteri',\n", " 'Pengangkutan',\n", " 'Anthony',\n", " 'Loke',\n", " 'Siew',\n", " 'Fook',\n", " 'menitipkan',\n", " 'pesanan',\n", " 'khas',\n", " 'kepada',\n", " 'orang',\n", " 'ramai',\n", " 'yang',\n", " 'mahu',\n", " 'pulang',\n", " 'ke',\n", " 'kampung',\n", " 'halaman',\n", " 'masing-masing.',\n", " 'Dalam',\n", " 'video',\n", " 'pendek',\n", " 'terbitan',\n", " 'Jabatan',\n", " 'Keselamatan',\n", " 'Jalan',\n", " 'Raya',\n", " '(JKJR)',\n", " 'itu,',\n", " 'Dr',\n", " 'Mahathir',\n", " 'menasihati',\n", " 'mereka',\n", " 'supaya',\n", " 'berhenti',\n", " 'berehat',\n", " 'dan',\n", " 'tidur',\n", " 'sebentar',\n", " 'sekiranya',\n", " 'mengantuk',\n", " 'ketika',\n", " 'memandu.'],\n", " 'tags': [{'text': 'KUALA LUMPUR:',\n", " 'type': 'PROPN',\n", " 'score': 1.0,\n", " 'beginOffset': 0,\n", " 'endOffset': 1},\n", " {'text': 'Sempena',\n", " 'type': 'ADP',\n", " 'score': 1.0,\n", " 'beginOffset': 2,\n", " 'endOffset': 2},\n", " {'text': 'sambutan Aidilfitri minggu',\n", " 'type': 'NOUN',\n", " 'score': 1.0,\n", " 'beginOffset': 3,\n", " 'endOffset': 5},\n", " {'text': 'depan,',\n", " 'type': 'ADJ',\n", " 'score': 1.0,\n", " 'beginOffset': 6,\n", " 'endOffset': 6},\n", " {'text': 'Perdana Menteri Tun Dr Mahathir Mohamad',\n", " 'type': 'PROPN',\n", " 'score': 1.0,\n", " 'beginOffset': 7,\n", " 'endOffset': 12},\n", " {'text': 'dan',\n", " 'type': 'CCONJ',\n", " 'score': 1.0,\n", " 'beginOffset': 13,\n", " 'endOffset': 13},\n", " {'text': 'Menteri Pengangkutan Anthony Loke Siew Fook',\n", " 'type': 'PROPN',\n", " 'score': 1.0,\n", " 'beginOffset': 14,\n", " 'endOffset': 19},\n", " {'text': 'menitipkan',\n", " 'type': 'VERB',\n", " 'score': 1.0,\n", " 'beginOffset': 20,\n", " 'endOffset': 20},\n", " {'text': 'pesanan',\n", " 'type': 'NOUN',\n", " 'score': 1.0,\n", " 'beginOffset': 21,\n", " 'endOffset': 21},\n", " {'text': 'khas',\n", " 'type': 'ADJ',\n", " 'score': 1.0,\n", " 'beginOffset': 22,\n", " 'endOffset': 22},\n", " {'text': 'kepada',\n", " 'type': 'ADP',\n", " 'score': 1.0,\n", " 'beginOffset': 23,\n", " 'endOffset': 23},\n", " {'text': 'orang',\n", " 'type': 'NOUN',\n", " 'score': 1.0,\n", " 'beginOffset': 24,\n", " 'endOffset': 24},\n", " {'text': 'ramai',\n", " 'type': 'ADJ',\n", " 'score': 1.0,\n", " 'beginOffset': 25,\n", " 'endOffset': 25},\n", " {'text': 'yang',\n", " 'type': 'PRON',\n", " 'score': 1.0,\n", " 'beginOffset': 26,\n", " 'endOffset': 26},\n", " {'text': 'mahu',\n", " 'type': 'ADV',\n", " 'score': 1.0,\n", " 'beginOffset': 27,\n", " 'endOffset': 27},\n", " {'text': 'pulang',\n", " 'type': 'VERB',\n", " 'score': 1.0,\n", " 'beginOffset': 28,\n", " 'endOffset': 28},\n", " {'text': 'ke',\n", " 'type': 'ADP',\n", " 'score': 1.0,\n", " 'beginOffset': 29,\n", " 'endOffset': 29},\n", " {'text': 'kampung halaman',\n", " 'type': 'NOUN',\n", " 'score': 1.0,\n", " 'beginOffset': 30,\n", " 'endOffset': 31},\n", " {'text': 'masing-masing.',\n", " 'type': 'DET',\n", " 'score': 1.0,\n", " 'beginOffset': 32,\n", " 'endOffset': 32},\n", " {'text': 'Dalam',\n", " 'type': 'ADP',\n", " 'score': 1.0,\n", " 'beginOffset': 33,\n", " 'endOffset': 33},\n", " {'text': 'video',\n", " 'type': 'NOUN',\n", " 'score': 1.0,\n", " 'beginOffset': 34,\n", " 'endOffset': 34},\n", " {'text': 'pendek',\n", " 'type': 'ADJ',\n", " 'score': 1.0,\n", " 'beginOffset': 35,\n", " 'endOffset': 35},\n", " {'text': 'terbitan',\n", " 'type': 'NOUN',\n", " 'score': 1.0,\n", " 'beginOffset': 36,\n", " 'endOffset': 36},\n", " {'text': 'Jabatan Keselamatan Jalan Raya',\n", " 'type': 'PROPN',\n", " 'score': 1.0,\n", " 'beginOffset': 37,\n", " 'endOffset': 40},\n", " {'text': '(JKJR)',\n", " 'type': 'PUNCT',\n", " 'score': 1.0,\n", " 'beginOffset': 41,\n", " 'endOffset': 41},\n", " {'text': 'itu,',\n", " 'type': 'DET',\n", " 'score': 1.0,\n", " 'beginOffset': 42,\n", " 'endOffset': 42},\n", " {'text': 'Dr Mahathir',\n", " 'type': 'PROPN',\n", " 'score': 1.0,\n", " 'beginOffset': 43,\n", " 'endOffset': 44},\n", " {'text': 'menasihati',\n", " 'type': 'VERB',\n", " 'score': 1.0,\n", " 'beginOffset': 45,\n", " 'endOffset': 45},\n", " {'text': 'mereka',\n", " 'type': 'PRON',\n", " 'score': 1.0,\n", " 'beginOffset': 46,\n", " 'endOffset': 46},\n", " {'text': 'supaya',\n", " 'type': 'SCONJ',\n", " 'score': 1.0,\n", " 'beginOffset': 47,\n", " 'endOffset': 47},\n", " {'text': 'berhenti berehat',\n", " 'type': 'VERB',\n", " 'score': 1.0,\n", " 'beginOffset': 48,\n", " 'endOffset': 49},\n", " {'text': 'dan',\n", " 'type': 'CCONJ',\n", " 'score': 1.0,\n", " 'beginOffset': 50,\n", " 'endOffset': 50},\n", " {'text': 'tidur',\n", " 'type': 'VERB',\n", " 'score': 1.0,\n", " 'beginOffset': 51,\n", " 'endOffset': 51},\n", " {'text': 'sebentar',\n", " 'type': 'NOUN',\n", " 'score': 1.0,\n", " 'beginOffset': 52,\n", " 'endOffset': 52},\n", " {'text': 'sekiranya',\n", " 'type': 'SCONJ',\n", " 'score': 1.0,\n", " 'beginOffset': 53,\n", " 'endOffset': 53},\n", " {'text': 'mengantuk',\n", " 'type': 'ADJ',\n", " 'score': 1.0,\n", " 'beginOffset': 54,\n", " 'endOffset': 54},\n", " {'text': 'ketika',\n", " 'type': 'SCONJ',\n", " 'score': 1.0,\n", " 'beginOffset': 55,\n", " 'endOffset': 55}]}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.analyze(string)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vectorize\n", "\n", "Let say you want to visualize word level in lower dimension, you can use `model.vectorize`,\n", "\n", "```python\n", "def vectorize(self, string: str):\n", " \"\"\"\n", " vectorize a string.\n", "\n", " Parameters\n", " ----------\n", " string: List[str]\n", "\n", " Returns\n", " -------\n", " result: np.array\n", " \"\"\"\n", "```" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "strings = [string, \n", " 'Husein baca buku Perlembagaan yang berharga 3k ringgit dekat kfc sungai petani minggu lepas, 2 ptg 2 oktober 2019 , suhu 32 celcius, sambil makan ayam goreng dan milo o ais',\n", " 'contact Husein at husein.zol05@gmail.com',\n", " 'tolong tempahkan meja makan makan nasi dagang dan jus apple, milo tarik esok dekat Restoran Sebulek']" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "r = [quantized_model.vectorize(string) for string in strings]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "x, y = [], []\n", "for row in r:\n", " x.extend([i[0] for i in row])\n", " y.extend([i[1] for i in row])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(108, 2)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.manifold import TSNE\n", "import matplotlib.pyplot as plt\n", "\n", "tsne = TSNE().fit_transform(y)\n", "tsne.shape" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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FalTpw6nTp2iQ4cOeSqN6+npkZmZiaOjI0OGDCEkJARbW1vCwsJ022RmZtK/f39q1apF165dGTt2LL/99htJSUkEBwcD4OLiwtSpUwkNDSU9PZ1z584xZswYqlatilqtJjIyktDQULp3784XX3yh2+7KlSsAKIqCSqWSvbsyIgOdJEnF9rC8k3N2/i/nu4+PDwsWLMgp48WZM2cwMDCgXr16uoTIAAkJCVy6dImpU6cSGBjI7t27uXLlCocOHSIpKYkPPviAqKgo6tevT3JyMqGhobr0Wlu3bs2TUzKHpaUl8+bNw97enpUrV3L69Gnda5UrV2bIkCF06dIFrVaLra0tNjY2ZGVlcfnyZe7du8dff/3F1KlTdWnEcvJaarVaTExMMDc3JzY2lm3btum202g0eaoNWFpaAtlpxyIiIor/pktFJgOdJEnF9qi8kzk+//xzNBoN1g1sMXnVGs83h/MgS9D89XeIjY1l5syZQHaCZB8fH86dO8fChQsB2LlzJ/Xr12fYsGF4e3tjaWlJ27ZtadmyJUZGRri7uxMcHMyIESPy3PvLMXv2bPr160dGRgZqtRoLCwvMzc0BdFlRhg4diomJCf3798fKygpra2vGjBnDG2+8wYMHD5g4cSKhoaG4ubkxc+ZM2rRpg1qtxsHBgUaNGtGjRw+0Wq1uO2NjY12lhNznkZUGnj0Z6CRJKrb86bFqf7yuwPPGxsb834gvMOkTQNX3FlG191SEgCA9J+as3qNLkrx27VqOHz/O7du3effddzl27Bi///47MTExODs706tXL3799Vfq1q1LcHAwjo6OvP/++wBMnTqVDh066M45fvx4rK2tuX//PpMmTeLcuXPUrFmTlJQU3NzcAJg2bZpuDV3VqlUJDAxET08Pd3d3FixYwMKFC6lbty4jR44kNjaWiIgIZs+ezf79+3nllVeYNWsWly5d4ocffsiznampKa+88goAarVal/RZevbkZBRJkoptgk9Dpmw4m2f4srC0WQ8b4vzx6G127NhBq1at+O677/D396djx45ER0eTkpJClSpVaNGiBfPmzWPOnDkAzJo1C4BVq1YxcuRI/P390Wg09OnTBycnpzznmD59Og4ODmi1WgwNDalTpw6urq5FujYnJydcXFxo1KgRtWrVwtPTU/fasGHD6NSpk24m5sO2k8qWTAEmSVKJKEraLFkZQHoaMgWYJEnPhUelzcpRw8K40NI6sjKAVJrkPTpJkp4ZWRlAKguyRydJ0jOT0+OTlQGkZ0kGOkmSnqmiDHFKUkmSQ5eSJElSuSYDnSRJklSuyUAnSZIklWsy0EmSJEnlmgx0kiRJUrkmA50kSZJUrslAJ0mSJJVrMtBJkiRJ5ZoMdJIkSVK5JgOdJEmSVK7JQCdJkiSVazLQSZIkSeXac1V4VVGUOOB6GZ3eEogvo3OXFnlNLwZ5TS8GeU1l5zUhRJWn3fm5CnRlSVGUk8WpYPs8ktf0YpDX9GKQ1/TikkOXkiRJUrkmA50kSZJUrslA9z8/l3UDSoG8pheDvKYXg7ymF5S8RydJkiSVa7JHJ0mSJJVrMtBJkiRJ5ZoMdPkoivKBoijhiqKcUxTl67JuT0lRFGWcoihCURTLsm5LcSmKMue/31GooigbFUWxKOs2PS1FUTopinJRUZQriqJMLuv2FJeiKLUURdmvKMr5//4f+rCs21RSFEVRKYpyRlGUrWXdlpKgKIqFoijr/vt/6YKiKM3Luk2lRQa6XBRFaQN0A5yEEHbA3DJuUolQFKUW0BGILOu2lJDdgL0QwhG4BEwp4/Y8FUVRVMAi4P+AxsA7iqI0LttWFVsmME4I0RhoBrxfDq4px4fAhbJuRAn6DtghhGgEOFG+ri0PGejyGgnMFkI8ABBC3C7j9pSUb4GJQLmYeSSE2CWEyPzv4VGgZlm2pxiaAleEEFeFEBnAarK/aL2whBC3hBCn//v3fbI/PK3KtlXFpyhKTeB1YHFZt6UkKIpiDrQCfgUQQmQIIe6VaaNKkQx0eTUAvBRFOaYoyt+KojQp6wYVl6Io3YBoIURIWbellAwCtpd1I56SFRCV6/ENykFQyKEoijXgAhwr46aUhACyvyxqy7gdJcUGiAOW/jccu1hRFNOyblRp0S/rBjxriqLsAaoV8tKnZL8flcgecmkC/KEoSh3xnK/BeMw1fUL2sOUL5VHXJITY/N82n5I9VLbqWbZNejxFUcyA9cBHQoiksm5PcSiK0gW4LYQ4pSiKdxk3p6ToA67AB0KIY4qifAdMBj4v22aVjpcu0Akh2j/sNUVRRgIb/gtsxxVF0ZKd9DTuWbXvaTzsmhRFcSD7m1uIoiiQPcR3WlGUpkKImGfYxCf2qN8TgKIovkAXoN3z/kXkEaKBWrke1/zvuReaoigGZAe5VUKIDWXdnhLgCXRVFKUzYARUUBRlpRCiXxm3qzhuADeEEDm97XVkB7pySQ5d5rUJaAOgKEoDQM2Lkdm7UEKIs0KIqkIIayGENdl/3K7Pe5B7HEVROpE9jNRVCJFa1u0phhNAfUVRbBRFUQN9gC1l3KZiUbK/Uf0KXBBCfFPW7SkJQogpQoia//0/1AfY94IHOf77DIhSFKXhf0+1A86XYZNK1UvXo3uMJcASRVHCgAxg4AvcWyjPFgKGwO7/eqpHhRAjyrZJT04IkakoymhgJ6AClgghzpVxs4rLE+gPnFUUJfi/5z4RQvxVdk2SHuIDYNV/X7KuAu+VcXtKjUwBJkmSJJVrcuhSkiRJKtdkoJMkSZLKNRnoJEmSpHJNBjpJkiSpXJOBTpIkSSrXZKCTJEmSyjUZ6CRJkqRy7f8BSWixjrQNfqYAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize = (7, 7))\n", "plt.scatter(tsne[:, 0], tsne[:, 1])\n", "labels = x\n", "for label, x, y in zip(\n", " labels, tsne[:, 0], tsne[:, 1]\n", "):\n", " label = (\n", " '%s, %.3f' % (label[0], label[1])\n", " if isinstance(label, list)\n", " else label\n", " )\n", " plt.annotate(\n", " label,\n", " xy = (x, y),\n", " xytext = (0, 0),\n", " textcoords = 'offset points',\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pretty good, the model able to know cluster similar part-of-speech." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Voting stack model" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('KUALA', 'PROPN'),\n", " ('LUMPUR:', 'PROPN'),\n", " ('Sempena', 'ADP'),\n", " ('sambutan', 'NOUN'),\n", " ('Aidilfitri', 'PROPN'),\n", " ('minggu', 'NOUN'),\n", " ('depan,', 'ADJ'),\n", " ('Perdana', 'PROPN'),\n", " ('Menteri', 'PROPN'),\n", " ('Tun', 'PROPN'),\n", " ('Dr', 'PROPN'),\n", " ('Mahathir', 'PROPN'),\n", " ('Mohamad', 'PROPN'),\n", " ('dan', 'CCONJ'),\n", " ('Menteri', 'PROPN'),\n", " ('Pengangkutan', 'PROPN'),\n", " ('Anthony', 'PROPN'),\n", " ('Loke', 'PROPN'),\n", " ('Siew', 'PROPN'),\n", " ('Fook', 'PROPN'),\n", " ('menitipkan', 'VERB'),\n", " ('pesanan', 'NOUN'),\n", " ('khas', 'ADJ'),\n", " ('kepada', 'ADP'),\n", " ('orang', 'NOUN'),\n", " ('ramai', 'ADJ'),\n", " ('yang', 'PRON'),\n", " ('mahu', 'ADV'),\n", " ('pulang', 'VERB'),\n", " ('ke', 'ADP'),\n", " ('kampung', 'NOUN'),\n", " ('halaman', 'NOUN'),\n", " ('masing-masing.', 'ADV'),\n", " ('Dalam', 'ADP'),\n", " ('video', 'NOUN'),\n", " ('pendek', 'ADJ'),\n", " ('terbitan', 'NOUN'),\n", " ('Jabatan', 'NOUN'),\n", " ('Keselamatan', 'PROPN'),\n", " ('Jalan', 'PROPN'),\n", " ('Raya', 'PROPN'),\n", " ('(JKJR)', 'PUNCT'),\n", " ('itu,', 'DET'),\n", " ('Dr', 'PROPN'),\n", " ('Mahathir', 'PROPN'),\n", " ('menasihati', 'VERB'),\n", " ('mereka', 'PRON'),\n", " ('supaya', 'SCONJ'),\n", " ('berhenti', 'VERB'),\n", " ('berehat', 'VERB'),\n", " ('dan', 'CCONJ'),\n", " ('tidur', 'VERB'),\n", " ('sebentar', 'ADV'),\n", " ('sekiranya', 'SCONJ'),\n", " ('mengantuk', 'ADJ'),\n", " ('ketika', 'SCONJ'),\n", " ('memandu.', 'VERB')]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "alxlnet = malaya.pos.transformer(model = 'alxlnet')\n", "malaya.stack.voting_stack([model, alxlnet, alxlnet], string)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 2 }