API

malaya

malaya.available_gpu()[source]

Get list of GPUs from nvidia-smi.

Returns

result

Return type

List[str]

malaya.gpu_available()[source]

Check Malaya is GPU version.

Returns

result

Return type

bool

malaya.print_cache(location=None)[source]

Print cached data, this will print entire cache folder if let location = None.

Parameters

location (str, (default=None)) – if location is None, will print entire cache directory.

malaya.clear_all_cache()[source]

Remove cached data, this will delete entire cache folder.

malaya.clear_cache(location)[source]

Remove selected cached data, please run malaya.print_cache() to get path.

Parameters

location (str) –

Returns

result

Return type

boolean

malaya.clear_session(model)[source]

Clear session from a model to prevent any out-of-memory or segmentation fault issues.

Parameters

model (malaya object.) –

Returns

result

Return type

boolean

malaya.augmentation

malaya.augmentation.synonym(string: str, threshold: float = 0.5, top_n=5, cleaning=<function augmentation_textcleaning>, **kwargs)[source]

augmenting a string using synonym, https://github.com/huseinzol05/Malaya-Dataset#90k-synonym

Parameters
  • string (str) –

  • threshold (float, optional (default=0.5)) – random selection for a word.

  • top_n (int, (default=5)) – number of nearest neighbors returned. Length of returned result should as top_n.

  • cleaning (function, (default=malaya.text.function.augmentation_textcleaning)) – function to clean text.

Returns

result

Return type

List[str]

malaya.augmentation.wordvector(string: str, wordvector, threshold: float = 0.5, top_n: int = 5, soft: bool = False, cleaning=<function augmentation_textcleaning>)[source]

augmenting a string using wordvector.

Parameters
  • string (str) –

  • wordvector (object) – wordvector interface object.

  • threshold (float, optional (default=0.5)) – random selection for a word.

  • soft (bool, optional (default=False)) – if True, a word not in the dictionary will be replaced with nearest jarowrinkler ratio. if False, it will throw an exception if a word not in the dictionary.

  • top_n (int, (default=5)) – number of nearest neighbors returned. Length of returned result should as top_n.

  • cleaning (function, (default=malaya.text.function.augmentation_textcleaning)) – function to clean text.

Returns

result

Return type

List[str]

malaya.augmentation.transformer(string: str, model, threshold: float = 0.5, top_p: float = 0.9, top_k: int = 100, temperature: float = 1.0, top_n: int = 5, cleaning=None)[source]

augmenting a string using transformer + nucleus sampling / top-k sampling.

Parameters
  • string (str) –

  • model (object) – transformer interface object. Right now only supported BERT, ALBERT and ELECTRA.

  • threshold (float, optional (default=0.5)) – random selection for a word.

  • top_p (float, optional (default=0.8)) – cumulative sum of probabilities to sample a word. If top_n bigger than 0, the model will use nucleus sampling, else top-k sampling.

  • top_k (int, optional (default=100)) – k for top-k sampling.

  • temperature (float, optional (default=0.8)) – logits * temperature.

  • top_n (int, (default=5)) – number of nearest neighbors returned. Length of returned result should as top_n.

  • cleaning (function, (default=None)) – function to clean text.

Returns

result

Return type

List[str]

malaya.cluster

malaya.cluster.cluster_words(list_words: List[str])[source]

cluster similar words based on structure, eg, [‘mahathir mohamad’, ‘mahathir’] = [‘mahathir mohamad’]

Parameters

list_words (List[str]) –

Returns

string

Return type

List[str]

malaya.cluster.cluster_pos(result: List[Tuple[str, str]])[source]

cluster similar POS.

Parameters

result (List[Tuple[str, str]]) –

Returns

result

Return type

Dict[str, List[str]]

malaya.cluster.cluster_tagging(result: List[Tuple[str, str]])[source]

cluster any tagging results, as long the data passed [(string, label), (string, label)].

Parameters

result (List[Tuple[str, str]]) –

Returns

result

Return type

Dict[str, List[str]]

malaya.cluster.cluster_entities(result: List[Tuple[str, str]])[source]

cluster similar Entities.

Parameters

result (List[Tuple[str, str]]) –

Returns

result

Return type

Dict[str, List[str]]

malaya.cluster.cluster_scatter(corpus: List[str], vectorizer, num_clusters: int = 5, titles: List[str] = None, colors: List[str] = None, stemming=<function sastrawi>, stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, cleaning=<function simple_textcleaning>, clustering=<class 'sklearn.cluster._kmeans.KMeans'>, decomposition=<class 'sklearn.manifold._mds.MDS'>, ngram: Tuple[int, int] = (1, 3), figsize: Tuple[int, int] = (17, 9), batch_size: int = 20)[source]

plot scatter plot on similar text clusters.

Parameters
  • corpus (List[str]) –

  • vectorizer (class) – vectorizer class.

  • num_clusters (int, (default=5)) – size of unsupervised clusters.

  • titles (List[str], (default=None)) – list of titles, length must same with corpus.

  • colors (List[str], (default=None)) – list of colors, length must same with num_clusters.

  • stemming (function, (default=malaya.stem.sastrawi)) – function to stem the corpus.

  • stop_words (List[str], (default=malaya.texts.function.STOPWORDS)) – list of stop words to remove.

  • ngram (Tuple[int, int], (default=(1,3))) – n-grams size to train a corpus.

  • cleaning (function, (default=malaya.texts.function.simple_textcleaning)) – function to clean the corpus.

  • batch_size (int, (default=10)) – size of strings for each vectorization and attention. Only useful if use transformer vectorizer.

Returns

dictionary

Return type

{‘X’: X, ‘Y’: Y, ‘labels’: clusters, ‘vector’: transformed_text_clean, ‘titles’: titles}

malaya.cluster.cluster_dendogram(corpus: List[str], vectorizer, titles: List[str] = None, stemming=<function sastrawi>, stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, cleaning=<function simple_textcleaning>, random_samples: float = 0.3, ngram: Tuple[int, int] = (1, 3), figsize: Tuple[int, int] = (17, 9), batch_size: int = 20)[source]

plot hierarchical dendogram with similar texts.

Parameters
  • corpus (List[str]) –

  • vectorizer (class) – vectorizer class.

  • num_clusters (int, (default=5)) – size of unsupervised clusters.

  • titles (List[str], (default=None)) – list of titles, length must same with corpus.

  • stemming (function, (default=malaya.stem.sastrawi)) – function to stem the corpus.

  • stop_words (List[str], (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

  • cleaning (function, (default=malaya.text.function.simple_textcleaning)) – function to clean the corpus.

  • random_samples (float, (default=0.3)) – random samples from the corpus, 0.3 means 30%.

  • ngram (Tuple[int, int], (default=(1,3))) – n-grams size to train a corpus.

  • batch_size (int, (default=20)) – size of strings for each vectorization and attention. Only useful if use transformer vectorizer.

Returns

dictionary

Return type

{‘linkage_matrix’: linkage_matrix, ‘titles’: titles}

malaya.cluster.cluster_graph(corpus: List[str], vectorizer, threshold: float = 0.9, num_clusters: int = 5, titles: List[str] = None, colors: List[str] = None, stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, stemming=<function sastrawi>, ngram: Tuple[int, int] = (1, 3), cleaning=<function simple_textcleaning>, clustering=<class 'sklearn.cluster._kmeans.KMeans'>, figsize: Tuple[int, int] = (17, 9), with_labels: bool = True, batch_size: int = 20)[source]

plot undirected graph with similar texts.

Parameters
  • corpus (List[str]) –

  • vectorizer (class) – vectorizer class.

  • threshold (float, (default=0.9)) – 0.9 means, 90% above absolute pearson correlation.

  • num_clusters (int, (default=5)) – size of unsupervised clusters.

  • titles (List[str], (default=True)) – list of titles, length must same with corpus.

  • stemming (function, (default=malaya.stem.sastrawi)) – function to stem the corpus.

  • stop_words (List[str], (default=malaya.texts.function.STOPWORDS)) – list of stop words to remove.

  • cleaning (function, (default=malaya.texts.function.simple_textcleaning)) – function to clean the corpus.

  • ngram (Tuple[int, int], (default=(1,3))) – n-grams size to train a corpus.

  • batch_size (int, (default=20)) – size of strings for each vectorization and attention. Only useful if use transformer vectorizer.

Returns

dictionary

Return type

{‘G’: G, ‘pos’: pos, ‘node_colors’: node_colors, ‘node_labels’: node_labels}

malaya.cluster.cluster_entity_linking(corpus: List[str], vectorizer, entity_model, topic_modeling_model, threshold: float = 0.3, topic_decomposition: int = 2, topic_length: int = 10, fuzzy_ratio: int = 70, accepted_entities: List[str] = ['law', 'location', 'organization', 'person', 'event'], cleaning=<function simple_textcleaning>, stemming=<function sastrawi>, colors: List[str] = None, stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, max_df: float = 1.0, min_df: int = 1, ngram: Tuple[int, int] = (2, 3), figsize: Tuple[int, int] = (17, 9), batch_size: int = 20)[source]

plot undirected graph for Entities and topics relationship.

Parameters
  • corpus (list or str) –

  • vectorizer (class) –

  • titles (list) – list of titles, length must same with corpus.

  • colors (list) – list of colors, length must same with num_clusters.

  • threshold (float, (default=0.3)) – 0.3 means, 30% above absolute pearson correlation.

  • topic_decomposition (int, (default=2)) – size of decomposition.

  • topic_length (int, (default=10)) – size of topic models.

  • fuzzy_ratio (int, (default=70)) – size of ratio for fuzzywuzzy.

  • stemming (bool, (default=True)) – If True, sastrawi_stemmer will apply.

  • max_df (float, (default=0.95)) – maximum of a word selected based on document frequency.

  • min_df (int, (default=2)) – minimum of a word selected on based on document frequency.

  • ngram (tuple, (default=(1,3))) – n-grams size to train a corpus.

  • cleaning (function, (default=simple_textcleaning)) – function to clean the corpus.

  • stop_words (list, (default=STOPWORDS)) – list of stop words to remove.

Returns

dictionary

Return type

{‘G’: G, ‘pos’: pos, ‘node_colors’: node_colors, ‘node_labels’: node_labels}

malaya.constituency

malaya.constituency.available_transformer()[source]

List available transformer models.

malaya.constituency.transformer(model: str = 'xlnet', quantized: bool = False, **kwargs)[source]

Load Transformer Constituency Parsing model, transfer learning Transformer + self attentive parsing.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.tf.CONSTITUENCY class

malaya.dependency

malaya.dependency.describe()[source]

Describe Dependency supported.

malaya.dependency.dependency_graph(tagging, indexing)[source]

Return helper object for dependency parser results. Only accept tagging and indexing outputs from dependency models.

malaya.dependency.available_transformer()[source]

List available transformer dependency parsing models.

malaya.dependency.transformer(model: str = 'xlnet', quantized: bool = False, **kwargs)[source]

Load Transformer Dependency Parsing model, transfer learning Transformer + biaffine attention.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

Transformer class

malaya.emotion

malaya.emotion.available_transformer()[source]

List available transformer emotion analysis models.

malaya.emotion.multinomial(**kwargs)[source]

Load multinomial emotion model.

Returns

result

Return type

malaya.model.ml.BAYES class

malaya.emotion.transformer(model: str = 'xlnet', quantized: bool = False, **kwargs)[source]

Load Transformer emotion model.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.supervised.softmax.transformer function

malaya.entity

malaya.entity.describe()[source]

Describe Entities supported.

malaya.entity.describe_ontonotes5()[source]

Describe OntoNotes5 Entities supported. https://spacy.io/api/annotation#named-entities

malaya.entity.available_transformer()[source]

List available transformer Entity Tagging models.

malaya.entity.transformer(model: str = 'xlnet', quantized: bool = False, **kwargs)[source]

Load Transformer Entity Tagging model, transfer learning Transformer + CRF.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.supervised.tag.transformer function

malaya.entity.general_entity(model=None)[source]

Load Regex based general entities tagging along with another supervised entity tagging model.

Parameters

model (object) – model must has predict method. Make sure the predict method returned [(string, label), (string, label)].

Returns

result

Return type

malaya.text.entity.ENTITY_REGEX class

malaya.generator

malaya.generator.ngrams(sequence, n: int, pad_left=False, pad_right=False, left_pad_symbol=None, right_pad_symbol=None)[source]

generate ngrams.

Parameters
  • sequence (List[str]) – list of tokenize words.

  • n (int) – ngram size

Returns

result

Return type

List[Tuple[str, str]]

malaya.generator.pos_entities_ngram(result_pos: List[Tuple[str, str]], result_entities: List[Tuple[str, str]], ngram: Tuple[int, int] = (1, 3), accept_pos: List[str] = ['NOUN', 'PROPN', 'VERB'], accept_entities: List[str] = ['law', 'location', 'organization', 'person', 'time'])[source]

generate ngrams.

Parameters
  • result_pos (List[Tuple[str, str]]) – result from POS recognition.

  • result_entities (List[Tuple[str, str]]) – result of Entities recognition.

  • ngram (Tuple[int, int]) – ngram sizes.

  • accept_pos (List[str]) – accepted POS elements.

  • accept_entities (List[str]) – accept entities elements.

Returns

result

Return type

list

malaya.generator.sentence_ngram(sentence: str, ngram: Tuple[int, int] = (1, 3))[source]

generate ngram for a text

Parameters
  • sentence (str) –

  • ngram (tuple) – ngram sizes.

Returns

result

Return type

list

malaya.generator.shortform(word: str, augment_vowel: bool = True, augment_consonant: bool = True, prob_delete_vowel: float = 0.5, **kwargs)[source]

augmenting a formal word into socialmedia form. Purposely typo, purposely delete some vowels, purposely replaced some subwords into slang subwords.

Parameters
  • word (str) –

  • augment_vowel (bool, (default=True)) – if True, will augment vowels for each samples generated.

  • augment_consonant (bool, (default=True)) – if True, will augment consonants for each samples generated.

  • prob_delete_vowel (float, (default=0.5)) – probability to delete a vowel.

Returns

result

Return type

list

malaya.generator.transformer(string: str, model, generate_length: int = 30, leed_out_len: int = 1, temperature: float = 1.0, top_k: int = 100, burnin: int = 15, batch_size: int = 5)[source]

Use pretrained transformer models to generate a string given a prefix string. https://github.com/nyu-dl/bert-gen, https://arxiv.org/abs/1902.04094

Parameters
  • string (str) –

  • model (object) – transformer interface object. Right now only supported BERT, ALBERT.

  • generate_length (int, optional (default=256)) – length of sentence to generate.

  • leed_out_len (int, optional (default=1)) – length of extra masks for each iteration.

  • temperature (float, optional (default=1.0)) – logits * temperature.

  • top_k (int, optional (default=100)) – k for top-k sampling.

  • burnin (int, optional (default=15)) – for the first burnin steps, sample from the entire next word distribution, instead of top_k.

  • batch_size (int, optional (default=5)) – generate sentences size of batch_size.

Returns

result

Return type

List[str]

malaya.generator.available_gpt2()[source]

List available gpt2 generator models.

malaya.generator.gpt2(model: str = '345M', generate_length: int = 256, temperature: float = 1.0, top_k: int = 40, **kwargs)[source]

Load GPT2 model to generate a string given a prefix string.

Parameters
  • model (str, optional (default='345M')) –

    Model architecture supported. Allowed values:

    • '117M' - GPT2 117M parameters.

    • '345M' - GPT2 345M parameters.

  • generate_length (int, optional (default=256)) – length of sentence to generate.

  • temperature (float, optional (default=1.0)) – temperature value, value should between 0 and 1.

  • top_k (int, optional (default=40)) – top-k in nucleus sampling selection.

Returns

result

Return type

malaya.transformers.gpt2.Model class

malaya.generator.available_t5()[source]

List available T5 models.

malaya.generator.t5(model: str = 'base', compressed: bool = True, optimized: bool = False, **kwargs)[source]

Load T5 model to generate a string given a isu penting.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'base' - T5 BASE parameters.

    • 'small' - T5 SMALL parameters.

  • compressed (bool, optional (default=True)) – Load compressed model, but this not able to utilize malaya-gpu function. This only compressed model size, but when loaded into VRAM / RAM, size uncompressed and compressed are the same. We prefer un-compressed model due to compressed model prone to error.

  • optimized (bool, optional (default=False)) – if True, will load optimized uncompressed model, remove unnecessary nodes and fold batch norm to reduce model size. Optimized model not necessary faster, totally depends on the machine. We have no concrete proof optimized model maintain same accuracy as uncompressed model.

Returns

result

Return type

malaya.model.t5.GENERATOR class

malaya.keyword_extraction

malaya.keyword_extraction.rake(string: str, model=None, top_k: int = 5, auto_ngram: bool = True, ngram_method: str = 'bow', ngram: Tuple[int, int] = (1, 1), atleast: int = 1, stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, **kwargs)[source]

Extract keywords using Rake algorithm.

Parameters
  • string (str) –

  • model (Object, optional (default='None')) – Transformer model or any model has attention method.

  • top_k (int, optional (default=5)) – return top-k results.

  • auto_ngram (bool, optional (default=True)) – If True, will generate keyword candidates using N suitable ngram. Else use ngram_method.

  • ngram_method (str, optional (default='bow')) –

    Only usable if auto_ngram is False. supported ngram generator:

    • 'bow' - bag-of-word.

    • 'skipgram' - bag-of-word with skip technique.

  • ngram (tuple, optional (default=(1,1))) – n-grams size.

  • atleast (int, optional (default=1)) – at least count appeared in the string to accept as candidate.

  • stop_words (list, (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

Returns

result

Return type

Tuple[float, str]

malaya.keyword_extraction.textrank(string: str, vectorizer, top_k: int = 5, auto_ngram: bool = True, ngram_method: str = 'bow', ngram: Tuple[int, int] = (1, 1), atleast: int = 1, stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, **kwargs)[source]

Extract keywords using Textrank algorithm.

Parameters
  • string (str) –

  • vectorizer (Object, optional (default='None')) – model has fit_transform or vectorize method.

  • top_k (int, optional (default=5)) – return top-k results.

  • auto_ngram (bool, optional (default=True)) – If True, will generate keyword candidates using N suitable ngram. Else use ngram_method.

  • ngram_method (str, optional (default='bow')) –

    Only usable if auto_ngram is False. supported ngram generator:

    • 'bow' - bag-of-word.

    • 'skipgram' - bag-of-word with skip technique.

  • ngram (tuple, optional (default=(1,1))) – n-grams size.

  • atleast (int, optional (default=1)) – at least count appeared in the string to accept as candidate.

  • stop_words (list, (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

Returns

result

Return type

Tuple[float, str]

malaya.keyword_extraction.attention(string: str, model, top_k: int = 5, auto_ngram: bool = True, ngram_method: str = 'bow', ngram: Tuple[int, int] = (1, 1), atleast: int = 1, stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, **kwargs)[source]

Extract keywords using Attention mechanism.

Parameters
  • string (str) –

  • model (Object, optional (default='None')) – Transformer model or any model has attention method.

  • top_k (int, optional (default=5)) – return top-k results.

  • auto_ngram (bool, optional (default=True)) – If True, will generate keyword candidates using N suitable ngram. Else use ngram_method.

  • ngram_method (str, optional (default='bow')) –

    Only usable if auto_ngram is False. supported ngram generator:

    • 'bow' - bag-of-word.

    • 'skipgram' - bag-of-word with skip technique.

  • ngram (tuple, optional (default=(1,1))) – n-grams size.

  • atleast (int, optional (default=1)) – at least count appeared in the string to accept as candidate.

  • stop_words (list, (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

Returns

result

Return type

Tuple[float, str]

malaya.language_detection

malaya.language_detection.fasttext(quantization: bool = True, **kwargs)[source]

Load Fasttext language detection model.

Parameters

quantization (bool, optional (default=True)) – if True, load quantized fasttext model. Else, load original fasttext model.

Returns

result

Return type

malaya.model.ml.LANGUAGE_DETECTION class

malaya.language_detection.deep_model(**kwargs)[source]

Load deep learning language detection model.

Returns

result

Return type

malaya.model.tf.DEEP_LANG class

malaya.lexicon

malaya.lexicon.random_walk(lexicon: Dict[str, List[str]], wordvector, pool_size: int = 10, top_n: int = 20, similarity_power: float = 10.0, beta: float = 0.9, arccos: bool = True, normalization: bool = True, soft: bool = False, silent: bool = False)[source]

Induce lexicon by using random walk technique, use in paper, https://arxiv.org/pdf/1606.02820.pdf

Parameters
  • lexicon (Dict[str : List[str]]) – curated lexicon from expert domain, {‘label1’: [str], ‘label2’: [str]}.

  • wordvector (object) – wordvector interface object.

  • pool_size (int, optional (default=10)) – pick top-pool size from each lexicons.

  • top_n (int, optional (default=20)) – top_n for each vectors will multiple with similarity_power.

  • similarity_power (float, optional (default=10.0)) – extra score for top_n, less will generate less bias induced but high chance unbalanced outcome.

  • beta (float, optional (default=0.9)) – penalty score, towards to 1.0 means less penalty. 0 < beta < 1.

  • arccos (bool, optional (default=True)) – covariance distribution for embedded.dot(embedded.T). If false, covariance + 1.

  • normalization (bool, optional (default=True)) – normalize word vectors using L2 norm. L2 is good to penalize skewed vectors.

  • soft (bool, optional (default=False)) – if True, a word not in the dictionary will be replaced with nearest jarowrinkler ratio. if False, it will throw an exception if a word not in the dictionary.

  • silent (bool, optional (default=False)) – if True, will not print any logs.

Returns

result

Return type

tuple(labels[argmax(scores), axis = 1], scores, labels)

malaya.lexicon.propagate_probabilistic(lexicon: Dict[str, List[str]], wordvector, pool_size: int = 10, top_n: int = 20, similarity_power: float = 10.0, arccos: bool = True, normalization: bool = True, soft: bool = False, silent: bool = False)[source]

Learns polarity scores via standard label propagation from lexicon sets.

Parameters
  • lexicon (Dict[str, List[str]]) – curated lexicon from expert domain, {‘label1’: [str], ‘label2’: [str]}.

  • wordvector (object) – wordvector interface object.

  • pool_size (int, optional (default=10)) – pick top-pool size from each lexicons.

  • top_n (int, optional (default=20)) – top_n for each vectors will multiple with similarity_power.

  • similarity_power (float, optional (default=10.0)) – extra score for top_n, less will generate less bias induced but high chance unbalanced outcome.

  • arccos (bool, optional (default=True)) – covariance distribution for embedded.dot(embedded.T). If false, covariance + 1.

  • normalization (bool, optional (default=True)) – normalize word vectors using L2 norm. L2 is good to penalize skewed vectors.

  • soft (bool, optional (default=False)) – if True, a word not in the dictionary will be replaced with nearest jarowrinkler ratio. if False, it will throw an exception if a word not in the dictionary.

  • silent (bool, optional (default=False)) – if True, will not print any logs.

Returns

result

Return type

tuple(labels[argmax(scores), axis = 1], scores, labels)

malaya.lexicon.propagate_graph(lexicon: Dict[str, List[str]], wordvector, pool_size: int = 10, top_n: int = 20, similarity_power: float = 10.0, normalization: bool = True, soft: bool = False, silent: bool = False)[source]

Graph propagation method dapted from Velikovich, Leonid, et al. “The viability of web-derived polarity lexicons.” http://www.aclweb.org/anthology/N10-1119

Parameters
  • lexicon (Dict[str, List[str]]) – curated lexicon from expert domain, {‘label1’: [str], ‘label2’: [str]}.

  • wordvector (object) – wordvector interface object.

  • pool_size (int, optional (default=10)) – pick top-pool size from each lexicons.

  • top_n (int, optional (default=20)) – top_n for each vectors will multiple with similarity_power.

  • similarity_power (float, optional (default=10.0)) – extra score for top_n, less will generate less bias induced but high chance unbalanced outcome.

  • normalization (bool, optional (default=True)) – normalize word vectors using L2 norm. L2 is good to penalize skewed vectors.

  • soft (bool, optional (default=False)) – if True, a word not in the dictionary will be replaced with nearest jarowrinkler ratio. if False, it will throw an exception if a word not in the dictionary.

  • silent (bool, optional (default=False)) – if True, will not print any logs.

Returns

result

Return type

tuple(labels[argmax(scores), axis = 1], scores, labels)

malaya.normalize

malaya.normalize.normalizer(speller)[source]

Load a Normalizer using any spelling correction model.

Parameters

speller (Malaya spelling correction object) –

Returns

result

Return type

malaya.normalize.NORMALIZER class

class malaya.normalize.NORMALIZER[source]
normalize(string: str, check_english: bool = True, normalize_entity: bool = True)[source]

Normalize a string

Parameters
  • string (str) –

  • check_english (bool, (default=True)) – check a word in english dictionary.

  • normalize_entity (bool, (default=True)) – normalize entities, only effect date, datetime, time and money patterns string only.

Returns

string

Return type

normalized string

malaya.nsfw

malaya.nsfw.lexicon(**kwargs)[source]

Load Lexicon NSFW model.

Returns

result

Return type

malaya.lexicon.nsfw.LEXICON class

malaya.nsfw.multinomial(**kwargs)[source]

Load multinomial NSFW model.

Returns

result

Return type

malaya.model.ml.BAYES class

malaya.num2word

malaya.num2word.to_cardinal(number)[source]

Translate from number input to cardinal text representation

Parameters

number (int) –

Returns

result – cardinal representation

Return type

str

malaya.num2word.to_ordinal(number)[source]

Translate from number input to ordinal text representation

Parameters

number (int) –

Returns

result – ordinal representation

Return type

str

malaya.num2word.to_ordinal_num(number)[source]

Translate from number input to ordinal numering text representation

Parameters

number (int) –

Returns

result – ordinal numering representation

Return type

str

malaya.num2word.to_currency(value)[source]

Translate from number input to cardinal currency text representation

Parameters

number (int) –

Returns

result – cardinal currency representation

Return type

str

malaya.num2word.to_year(value)[source]

Translate from number input to cardinal year text representation

Parameters

number (int) –

Returns

result – cardinal year representation

Return type

str

malaya.paraphrase

malaya.paraphrase.available_t5()[source]

List available T5 models.

malaya.paraphrase.available_transformer()[source]

List available transformer models.

malaya.paraphrase.t5(model: str = 'base', compressed: bool = True, optimized: bool = False, **kwargs)[source]

Load T5 model to generate a paraphrase given a string.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'base' - T5 BASE parameters.

    • 'small' - T5 SMALL parameters.

  • compressed (bool, optional (default=True)) – Load compressed model, but this not able to utilize malaya-gpu function. This only compressed model size, but when loaded into VRAM / RAM, size uncompressed and compressed are the same. We prefer un-compressed model due to compressed model prone to error.

  • optimized (bool, optional (default=False)) – if True, will load optimized uncompressed model, remove unnecessary nodes and fold batch norm to reduce model size. Optimized model not necessary faster, totally depends on the machine. We have no concrete proof optimized model maintain same accuracy as uncompressed model.

Returns

result

Return type

malaya.model.t5.PARAPHRASE class

malaya.paraphrase.transformer(model: str = 'base', quantized: bool = False, **kwargs)[source]

Load Malaya transformer encoder-decoder model to generate a paraphrase given a string.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'small' - Malaya Transformer SMALL parameters.

    • 'base' - Malaya Transformer BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.tf.PARAPHRASE class

malaya.pos

malaya.pos.describe()[source]

Describe Part-Of-Speech supported.

malaya.pos.available_transformer()[source]

List available transformer Part-Of-Speech Tagging models.

malaya.pos.naive(string: str)[source]

Recognize POS in a string using Regex.

Parameters

string (str) –

Returns

string

Return type

List[Tuple[str, str]]

malaya.pos.transformer(model: str = 'xlnet', quantized: bool = False, **kwargs)[source]

Load Transformer Entity Tagging model, transfer learning Transformer + CRF.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.supervised.tag.transformer function

malaya.preprocessing

malaya.preprocessing.unpack_english_contractions(text)[source]

Replace English contractions in text str with their unshortened forms. N.B. The “‘d” and “‘s” forms are ambiguous (had/would, is/has/possessive), so are left as-is. Important Note: The function is taken from textacy (https://github.com/chartbeat-labs/textacy).

malaya.preprocessing.preprocessing(normalize: List[str] = ['url', 'email', 'percent', 'money', 'phone', 'user', 'time', 'date', 'number'], annotate: List[str] = ['allcaps', 'elongated', 'repeated', 'emphasis', 'censored', 'hashtag'], lowercase: bool = True, fix_unidecode: bool = True, expand_hashtags: bool = True, expand_english_contractions: bool = True, translate_english_to_bm: bool = True, remove_postfix: bool = True, maxlen_segmenter: int = 20, speller=None, **kwargs)[source]

Load Preprocessing class.

Parameters
  • normalize (list) – normalizing tokens, can check all supported normalizing at malaya.preprocessing.get_normalize()

  • annotate (list) – annonate tokens <open></open>, only accept [‘hashtag’, ‘allcaps’, ‘elongated’, ‘repeated’, ‘emphasis’, ‘censored’]

  • lowercase (bool) –

  • fix_unidecode (bool) –

  • expand_hashtags (bool) – expand hashtags using Viterbi algorithm, #mondayblues == monday blues

  • expand_english_contractions (bool) – expand english contractions

  • translate_english_to_bm (bool) – translate english words to bahasa malaysia words

  • remove_postfix (bool) – remove postfix from a word, faster way to get root word

  • speller (object) – spelling correction object, need to have a method correct

  • validate (bool, optional (default=True)) – if True, malaya will check model availability and download if not available.

Returns

result

Return type

malaya.preprocessing._Preprocessing class

malaya.preprocessing.segmenter(max_split_length: int = 20, **kwargs)[source]

Load Segmenter class.

Parameters
  • max_split_length (int, (default=20)) – max length of words in a sentence to segment

  • validate (bool, optional (default=True)) – if True, malaya will check model availability and download if not available.

Returns

result

Return type

malaya.preprocessing._Segmenter class

class malaya.preprocessing.SocialTokenizer[source]

malaya.relevancy

malaya.relevancy.available_transformer()[source]

List available transformer relevancy analysis models.

malaya.relevancy.transformer(model: str = 'xlnet', quantized: bool = False, **kwargs)[source]

Load Transformer relevancy model.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.supervised.softmax.transformer function

malaya.sentiment

malaya.sentiment.available_transformer()[source]

List available transformer sentiment analysis models.

malaya.sentiment.multinomial(**kwargs)[source]

Load multinomial sentiment model.

Returns

result

Return type

malaya.model.ml.BAYES class

malaya.sentiment.transformer(model: str = 'bert', quantized: bool = False, **kwargs)[source]

Load Transformer sentiment model.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.supervised.softmax.transformer function

malaya.spell

class malaya.spell.PROBABILITY(corpus, sp_tokenizer=None)[source]

The SpellCorrector extends the functionality of the Peter Norvig’s spell-corrector in http://norvig.com/spell-correct.html And improve it using some algorithms from Normalization of noisy texts in Malaysian online reviews, https://www.researchgate.net/publication/287050449_Normalization_of_noisy_texts_in_Malaysian_online_reviews Added custom vowels augmentation

P(word)[source]

Probability of word.

correct(word: str, **kwargs)[source]

Most probable spelling correction for word.

correct_text(text: str)[source]

Correct all the words within a text, returning the corrected text.

correct_match(match)[source]

Spell-correct word in match, and preserve proper upper/lower/title case.

correct_word(word: str)[source]

Spell-correct word in match, and preserve proper upper/lower/title case.

class malaya.spell.SYMSPELL(model, verbosity, corpus, k=10)[source]

The SymspellCorrector extends the functionality of symspeller, https://github.com/mammothb/symspellpy And improve it using some algorithms from Normalization of noisy texts in Malaysian online reviews, https://www.researchgate.net/publication/287050449_Normalization_of_noisy_texts_in_Malaysian_online_reviews Added custom vowels augmentation

correct(word: str, **kwargs)[source]

Most probable spelling correction for word.

correct_text(text: str)[source]

Correct all the words within a text, returning the corrected text.

correct_match(match)[source]

Spell-correct word in match, and preserve proper upper/lower/title case.

malaya.spell.probability(sentence_piece: bool = False, **kwargs)[source]

Train a Probability Spell Corrector.

Parameters

sentence_piece (bool, optional (default=False)) – if True, reduce possible augmentation states using sentence piece.

Returns

result

Return type

malaya.spell.PROBABILITY class

malaya.spell.symspell(max_edit_distance_dictionary: int = 2, prefix_length: int = 7, term_index: int = 0, count_index: int = 1, top_k: int = 10, **kwargs)[source]

Train a symspell Spell Corrector.

Returns

result

Return type

malaya.spell.SYMSPELL class

malaya.spell.transformer(model, sentence_piece: bool = False, **kwargs)[source]

Load a Transformer Spell Corrector. Right now only supported BERT and ALBERT.

Parameters

sentence_piece (bool, optional (default=False)) – if True, reduce possible augmentation states using sentence piece.

Returns

result

Return type

malaya.spell.TRANSFORMER class

class malaya.spell.TRANSFORMER[source]
correct(word: str, string: str, index: int = - 1, batch_size: int = 20)[source]

Correct a word within a text, returning the corrected word.

correct_text(text: str, batch_size: int = 20)[source]

Correct all the words within a text, returning the corrected text.

correct_word(word: str, string: str, batch_size: int = 20)[source]

Spell-correct word in match, and preserve proper upper/lower/title case.

class malaya.spell.PROBABILITY[source]

The SpellCorrector extends the functionality of the Peter Norvig’s spell-corrector in http://norvig.com/spell-correct.html And improve it using some algorithms from Normalization of noisy texts in Malaysian online reviews, https://www.researchgate.net/publication/287050449_Normalization_of_noisy_texts_in_Malaysian_online_reviews Added custom vowels augmentation

P(word)[source]

Probability of word.

correct(word: str, **kwargs)[source]

Most probable spelling correction for word.

correct_text(text: str)[source]

Correct all the words within a text, returning the corrected text.

correct_match(match)[source]

Spell-correct word in match, and preserve proper upper/lower/title case.

correct_word(word: str)[source]

Spell-correct word in match, and preserve proper upper/lower/title case.

class malaya.spell.SYMSPELL[source]

The SymspellCorrector extends the functionality of symspeller, https://github.com/mammothb/symspellpy And improve it using some algorithms from Normalization of noisy texts in Malaysian online reviews, https://www.researchgate.net/publication/287050449_Normalization_of_noisy_texts_in_Malaysian_online_reviews Added custom vowels augmentation

correct(word: str, **kwargs)[source]

Most probable spelling correction for word.

correct_text(text: str)[source]

Correct all the words within a text, returning the corrected text.

correct_match(match)[source]

Spell-correct word in match, and preserve proper upper/lower/title case.

malaya.stack

malaya.stack.voting_stack(models, text: str)[source]

Stacking for POS, Entities and Dependency models.

Parameters
  • models (list) – list of models.

  • text (str) – string to predict.

Returns

result

Return type

list

malaya.stack.predict_stack(models, strings: List[str], aggregate: str = 'gmean', **kwargs)[source]

Stacking for predictive models.

Parameters
  • models (List[Callable]) – list of models.

  • strings (List[str]) –

  • aggregate (str, optional (default='gmean')) –

    Aggregate function supported. Allowed values:

    • 'gmean' - geometrical mean.

    • 'hmean' - harmonic mean.

    • 'mean' - mean.

    • 'min' - min.

    • 'max' - max.

    • 'median' - Harrell-Davis median.

Returns

result

Return type

dict

malaya.stem

malaya.stem.naive(word: str)[source]

Stem a string using startswith and endswith.

Parameters

string (str) –

Returns

result – stemmed string.

Return type

str

malaya.stem.sastrawi(string: str)[source]

Stem a string using Sastrawi, this also include lemmatization.

Parameters

string (str) –

Returns

result – stemmed string.

Return type

str

malaya.stem.deep_model(quantized: bool = False, **kwargs)[source]

Load LSTM + Bahdanau Attention stemming model, this also include lemmatization. Original size 41.6MB, quantized size 10.6MB .

Parameters

quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.stem.DEEP_STEMMER class

class malaya.stem.DEEP_STEMMER[source]
stem(string: str, beam_search: bool = True)[source]

Stem a string, this also include lemmatization.

Parameters
  • string (str) –

  • beam_search (bool, (optional=True)) – If True, use beam search decoder, else use greedy decoder.

Returns

result

Return type

str

malaya.subjectivity

malaya.subjectivity.available_transformer()[source]

List available transformer subjective analysis models.

malaya.subjectivity.multinomial(**kwargs)[source]

Load multinomial subjectivity model.

Parameters

validate (bool, optional (default=True)) – if True, malaya will check model availability and download if not available.

Returns

result

Return type

malaya.model.ml.BAYES class

malaya.subjectivity.transformer(model: str = 'bert', quantized: bool = False, **kwargs)[source]

Load Transformer subjectivity model.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.supervised.softmax.transformer function

malaya.summarization.abstractive

malaya.summarization.abstractive.available_t5()[source]

List available T5 models.

malaya.summarization.abstractive.available_transformer()[source]

List available transformer models.

malaya.summarization.abstractive.t5(model: str = 'base', compressed: bool = True, optimized: bool = False, **kwargs)[source]

Load T5 model to generate a summary given a string.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'base' - T5 BASE parameters.

    • 'small' - T5 SMALL parameters.

  • compressed (bool, optional (default=True)) – Load compressed model, but this not able to utilize malaya-gpu function. This only compressed model size, but when loaded into VRAM / RAM, size uncompressed and compressed are the same. We prefer un-compressed model due to compressed model prone to error.

  • optimized (bool, optional (default=False)) – if True, will load optimized uncompressed model, remove unnecessary nodes and fold batch norm to reduce model size. Optimized model not necessary faster, totally depends on the machine. We have no concrete proof optimized model maintain same accuracy as uncompressed model.

Returns

result

Return type

malaya.model.t5.SUMMARIZATION class

malaya.summarization.abstractive.transformer(model: str = 'base', quantized: bool = False, **kwargs)[source]

Load Malaya transformer encoder-decoder model to generate a summary given a string.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'small' - Malaya Transformer SMALL parameters.

    • 'base' - Malaya Transformer BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.tf.SUMMARIZATION class

malaya.summarization.extractive

malaya.summarization.extractive.available_skipthought()[source]

List available deep skip-thought models.

malaya.summarization.extractive.available_vectorizer()[source]

List available vectorizer for malaya.summarization.extractive.lda and malaya.summarization.extractive.lsa .

malaya.summarization.extractive.deep_skipthought(model: str = 'lstm')[source]

Load deep learning skipthought model.

Parameters

model (str, optional (default='skip-thought')) –

Model architecture supported. Allowed values:

  • 'lstm' - LSTM skip-thought deep learning model trained on news dataset.

  • 'residual-network' - residual network with Bahdanau Attention skip-thought deep learning model trained on wikipedia dataset.

Returns

DEEP_SKIPTHOUGHT

Return type

malaya.summarize.DEEP_SKIPTHOUGHT class

malaya.summarization.extractive.lda(corpus, top_k=3, important_words=10, max_df=0.95, min_df=2, ngram=(1, 3), vectorizer='bow', **kwargs)[source]

summarize a list of strings using LDA, scoring using TextRank.

Parameters
  • corpus (list) –

  • top_k (int, (default=3)) – number of summarized strings.

  • important_words (int, (default=10)) – number of important words.

  • max_df (float, (default=0.95)) – maximum of a word selected based on document frequency.

  • min_df (int, (default=2)) – minimum of a word selected on based on document frequency.

  • ngram (tuple, (default=(1,3))) – n-grams size to train a corpus.

  • vectorizer (str, (default='bow')) –

    vectorizer technique. Allowed values:

    • 'bow' - Bag of Word.

    • 'tfidf' - Term frequency inverse Document Frequency.

    • 'skip-gram' - Bag of Word with skipping certain n-grams.

Returns

dict

Return type

result

malaya.summarization.extractive.lsa(corpus, top_k=3, important_words=10, max_df=0.95, min_df=2, ngram=(1, 3), vectorizer='bow', **kwargs)[source]

summarize a list of strings using LSA, scoring using TextRank.

Parameters
  • corpus (list) –

  • top_k (int, (default=3)) – number of summarized strings.

  • important_words (int, (default=10)) – number of important words.

  • max_df (float, (default=0.95)) – maximum of a word selected based on document frequency.

  • min_df (int, (default=2)) – minimum of a word selected on based on document frequency.

  • ngram (tuple, (default=(1,3))) – n-grams size to train a corpus.

  • vectorizer (str, (default='bow')) –

    vectorizer technique. Allowed values:

    • 'bow' - Bag of Word.

    • 'tfidf' - Term frequency inverse Document Frequency.

    • 'skip-gram' - Bag of Word with skipping certain n-grams.

Returns

dict

Return type

result

malaya.summarization.extractive.doc2vec(vectorizer, corpus, top_k: int = 3, aggregation: int = 'mean', soft: bool = True)[source]

summarize a list of strings using doc2vec, scoring using TextRank.

Parameters
  • vectorizer (object) – fast-text or word2vec interface object.

  • corpus (list) –

  • top_k (int, (default=3)) – number of summarized strings.

  • aggregation (str, optional (default='mean')) –

    Aggregation supported. Allowed values:

    • 'mean' - mean.

    • 'min' - min.

    • 'max' - max.

    • 'sum' - sum.

    • 'sqrt' - square root.

  • soft (bool, optional (default=True)) – word not inside vectorizer will replace with nearest word if True, else, will skip.

Returns

dictionary

Return type

result

malaya.summarization.extractive.encoder(vectorizer)[source]

Encoder interface for summarization.

Parameters

vectorizer (object) – encoder interface object, eg, BERT, skip-thought, XLNET, ALBERT, ALXLNET.

Returns

result

Return type

malaya.summarization.extractive.DEEP_SUMMARIZER

class malaya.summarization.extractive.DEEP_SUMMARIZER[source]
summarize(corpus, top_k: int = 3, important_words: int = 3, **kwargs)[source]

Summarize list of strings / corpus

Parameters
  • corpus (str, list) –

  • top_k (int, (default=3)) – number of summarized strings.

  • important_words (int, (default=3)) – number of important words.

Returns

string

Return type

summarized string

class malaya.summarization.extractive.DEEP_SKIPTHOUGHT[source]
vectorize(strings)[source]

Vectorize string inputs using bert attention.

Parameters

strings (str / list of str) –

Returns

array

Return type

vectorized strings

malaya.similarity

malaya.similarity.doc2vec(vectorizer)[source]

Doc2vec interface for text similarity.

Parameters

vectorizer (object) – word vector interface object, fast-text, word2vec, elmo.

Returns

result

Return type

malaya.similarity.DOC2VEC_SIMILARITY

malaya.similarity.encoder(vectorizer)[source]

Encoder interface for text similarity.

Parameters

vectorizer (object) – encoder interface object, BERT, skip-thought, XLNET.

Returns

result

Return type

malaya.similarity.VECTORIZER_SIMILARITY

malaya.similarity.available_transformer()[source]

List available transformer similarity models.

malaya.similarity.transformer(model: str = 'bert', quantized: bool = False, **kwargs)[source]

Load Transformer similarity model.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.bert.SIAMESE_BERT class

class malaya.similarity.VECTORIZER_SIMILARITY[source]
predict_proba(left_strings: List[str], right_strings: List[str], similarity: str = 'cosine')[source]

calculate similarity for two different batch of texts.

Parameters
  • left_strings (list of str) –

  • right_strings (list of str) –

  • similarity (str, optional (default='mean')) –

    similarity supported. Allowed values:

    • 'cosine' - cosine similarity.

    • 'euclidean' - euclidean similarity.

    • 'manhattan' - manhattan similarity.

Returns

result

Return type

List[float]

heatmap(strings: List[str], similarity: str = 'cosine', visualize: bool = True, annotate: bool = True, figsize: Tuple[int, int] = (7, 7))[source]

plot a heatmap based on output from bert similarity.

Parameters
  • strings (list of str) – list of strings.

  • similarity (str, optional (default='mean')) –

    similarity supported. Allowed values:

    • 'cosine' - cosine similarity.

    • 'euclidean' - euclidean similarity.

    • 'manhattan' - manhattan similarity.

  • visualize (bool) – if True, it will render plt.show, else return data.

  • figsize (tuple, (default=(7, 7))) – figure size for plot.

Returns

result – list of results

Return type

list

class malaya.similarity.DOC2VEC_SIMILARITY[source]
predict_proba(left_strings: List[str], right_strings: List[str], aggregation: str = 'mean', similarity: str = 'cosine', soft: bool = True)[source]

calculate similarity for two different batch of texts.

Parameters
  • left_strings (list of str) –

  • right_strings (list of str) –

  • aggregation (str, optional (default='mean')) –

    Aggregation supported. Allowed values:

    • 'mean' - mean.

    • 'min' - min.

    • 'max' - max.

    • 'sum' - sum.

    • 'sqrt' - square root.

  • similarity (str, optional (default='mean')) –

    similarity supported. Allowed values:

    • 'cosine' - cosine similarity.

    • 'euclidean' - euclidean similarity.

    • 'manhattan' - manhattan similarity.

  • soft (bool, optional (default=True)) – word not inside word vector will replace with nearest word if True, else, will skip.

Returns

result

Return type

List[float]

heatmap(strings: List[str], aggregation: str = 'mean', similarity: str = 'cosine', soft: bool = True, visualize: bool = True, annotate: bool = True, figsize: Tuple[int, int] = (7, 7))[source]

plot a heatmap based on output from bert similarity.

Parameters
  • strings (list of str) – list of strings

  • aggregation (str, optional (default='mean')) –

    Aggregation supported. Allowed values:

    • 'mean' - mean.

    • 'min' - min.

    • 'max' - max.

    • 'sum' - sum.

    • 'sqrt' - square root.

  • similarity (str, optional (default='mean')) –

    similarity supported. Allowed values:

    • 'cosine' - cosine similarity.

    • 'euclidean' - euclidean similarity.

    • 'manhattan' - manhattan similarity.

  • soft (bool, optional (default=True)) – word not inside word vector will replace with nearest word if True, else, will skip.

  • visualize (bool) – if True, it will render plt.show, else return data.

  • figsize (tuple, (default=(7, 7))) – figure size for plot.

Returns

result – list of results.

Return type

list

malaya.topic_model

malaya.topic_model.available_vectorizer()[source]

List available vectorizer topic modeling.

malaya.topic_model.lda(corpus, n_topics=10, max_df=0.95, min_df=2, ngram=(1, 3), stemming=<function sastrawi>, vectorizer='bow', cleaning=<function simple_textcleaning>, stop_words={"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, **kwargs)[source]

Train a LDA model to do topic modelling based on corpus / list of strings given.

Parameters
  • corpus (list) –

  • n_topics (int, (default=10)) – size of decomposition column.

  • max_df (float, (default=0.95)) – maximum of a word selected based on document frequency.

  • min_df (int, (default=2)) – minimum of a word selected on based on document frequency.

  • ngram (tuple, (default=(1,3))) – n-grams size to train a corpus.

  • stemming (function, (default=malaya.stem.sastrawi)) – function to stem the corpus.

  • vectorizer (str, (default='bow')) –

    vectorizer technique. Allowed values:

    • 'bow' - Bag of Word.

    • 'tfidf' - Term frequency inverse Document Frequency.

    • 'skip-gram' - Bag of Word with skipping certain n-grams.

  • cleaning (function, (default=malaya.text.function.simple_textcleaning)) – function to clean the corpus.

  • stop_words (list, (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

Returns

result

Return type

malaya.topic_modelling.TOPIC class

malaya.topic_model.nmf(corpus, n_topics=10, max_df=0.95, min_df=2, ngram=(1, 3), stemming=<function sastrawi>, vectorizer='bow', cleaning=<function simple_textcleaning>, stop_words={"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, **kwargs)[source]

Train a NMF model to do topic modelling based on corpus / list of strings given.

Parameters
  • corpus (list) –

  • n_topics (int, (default=10)) – size of decomposition column.

  • max_df (float, (default=0.95)) – maximum of a word selected based on document frequency.

  • min_df (int, (default=2)) – minimum of a word selected on based on document frequency.

  • ngram (tuple, (default=(1,3))) – n-grams size to train a corpus.

  • stemming (function, (default=malaya.stem.sastrawi)) – function to stem the corpus.

  • vectorizer (str, (default='bow')) –

    vectorizer technique. Allowed values:

    • 'bow' - Bag of Word.

    • 'tfidf' - Term frequency inverse Document Frequency.

    • 'skip-gram' - Bag of Word with skipping certain n-grams.

  • cleaning (function, (default=malaya.text.function.simple_textcleaning)) – function to clean the corpus.

  • stop_words (list, (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

Returns

TOPIC

Return type

malaya.topic_modelling.TOPIC class

malaya.topic_model.lsa(corpus, n_topics, max_df=0.95, min_df=2, ngram=(1, 3), vectorizer='bow', stemming=<function sastrawi>, cleaning=<function simple_textcleaning>, stop_words={"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, **kwargs)[source]

Train a LSA model to do topic modelling based on corpus / list of strings given.

Parameters
  • corpus (list) –

  • n_topics (int, (default=10)) – size of decomposition column.

  • max_df (float, (default=0.95)) – maximum of a word selected based on document frequency.

  • min_df (int, (default=2)) – minimum of a word selected on based on document frequency.

  • ngram (tuple, (default=(1,3))) – n-grams size to train a corpus.

  • vectorizer (str, (default='bow')) –

    vectorizer technique. Allowed values:

    • 'bow' - Bag of Word.

    • 'tfidf' - Term frequency inverse Document Frequency.

    • 'skip-gram' - Bag of Word with skipping certain n-grams.

  • stemming (function, (default=malaya.stem.sastrawi)) – function to stem the corpus.

  • cleaning (function, (default=malaya.text.function.simple_textcleaning)) – function to clean the corpus.

  • stop_words (list, (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

Returns

TOPIC

Return type

malaya.topic_modelling.TOPIC class

malaya.topic_model.lda2vec(corpus: List[str], n_topics: int, max_df: float = 0.95, min_df: int = 2, ngram: Tuple[int, int] = (1, 3), stemming=<function sastrawi>, cleaning=<function simple_textcleaning>, vectorizer: str = 'bow', stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, window_size: int = 2, embedding_size: int = 128, epoch: int = 10, switch_loss: int = 3, skip: int = 5, **kwargs)[source]

Train a LDA2Vec model to do topic modelling based on corpus / list of strings given.

Parameters
  • corpus (list) –

  • n_topics (int, (default=10)) – size of decomposition column.

  • stemming (function, (default=malaya.stem.sastrawi)) – function to stem the corpus.

  • max_df (float, (default=0.95)) – maximum of a word selected based on document frequency.

  • min_df (int, (default=2)) – minimum of a word selected on based on document frequency.

  • ngram (tuple, (default=(1,3))) – n-grams size to train a corpus.

  • cleaning (function, (default=malaya.text.function.simple_textcleaning)) – function to clean the corpus.

  • stop_words (list, (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

  • embedding_size (int, (default=128)) – embedding size of lda2vec tensors.

  • training_iteration (int, (default=10)) – training iteration, how many loop need to train.

  • switch_loss (int, (default=3)) – baseline to switch from document based loss to document + word based loss.

  • vectorizer (str, (default='bow')) –

    vectorizer technique. Allowed values:

    • 'bow' - Bag of Word.

    • 'tfidf' - Term frequency inverse Document Frequency.

    • 'skip-gram' - Bag of Word with skipping certain n-grams.

  • skip (int, (default=5)) – skip value if vectorizer = ‘skip-gram’

Returns

result

Return type

malaya.topic_modelling.DEEP_TOPIC class

malaya.topic_model.transformer(corpus: List[str], n_topics: int, vectorizer, stemming=<function sastrawi>, cleaning=<function simple_textcleaning>, stop_words: List[str] = {"'s", "'ve", 'abang', 'acapkali', 'ada', 'adakah', 'adakan', 'adalah', 'adanya', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhir', 'akhiri', 'akhirnya', 'aku', 'akulah', 'akupun', 'al', 'alangkah', 'alkisah', 'allah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'antara', 'antaramu', 'antaranya', 'apa', 'apa-apa', 'apaan', 'apabila', 'apakah', 'apalagi', 'apapun', 'apatah', 'arakian', 'artinya', 'as', 'asal', 'asalam', 'asalkan', 'assalam', 'assalamualaikum', 'atas', 'atasmu', 'atasnya', 'atau', 'ataukah', 'ataupun', 'atuk', 'awak', 'awal', 'awalnya', 'ayah', 'baba', 'bagai', 'bagaikan', 'bagaimana', 'bagaimanakah', 'bagaimanapun', 'bagi', 'bagian', 'bagimu', 'baginda', 'baginya', 'bahawa', 'bahawasanya', 'bahkan', 'bahwa', 'bahwasanya', 'baik', 'bak', 'bakal', 'bakalan', 'balik', 'bang', 'banyak', 'banyaknya', 'bapak', 'bar', 'barangkali', 'barangsiapa', 'baru', 'bawah', 'beberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'bekerja', 'belaka', 'belakang', 'belakangan', 'belas', 'beliau', 'belum', 'belumkah', 'belumlah', 'benar', 'benarkah', 'benarlah', 'berada', 'berakhir', 'berakhirlah', 'berakhirnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'berarti', 'berawal', 'berbagai', 'berdatangan', 'beri', 'berikan', 'berikut', 'berikutnya', 'beriman', 'berjumlah', 'berkali-kali', 'berkata', 'berkehendak', 'berkeinginan', 'berkenaan', 'berkenan', 'berlainan', 'berlalu', 'berlangsung', 'berlebihan', 'bermacam', 'bermacam-macam', 'bermaksud', 'bermula', 'bersama', 'bersama-sama', 'bersiap', 'bersiap-siap', 'bertanya', 'bertanya-tanya', 'berturut', 'berturut-turut', 'bertutur', 'berujar', 'berupa', 'besar', 'beserta', 'beta', 'betul', 'betulkah', 'biar', 'biarpun', 'biasa', 'biasanya', 'bila', 'bilakah', 'bilamana', 'bin', 'binti', 'bir', 'bisa', 'bisakah', 'blum', 'bn', 'bnt', 'bole', 'boleh', 'bolehkah', 'bolehlah', 'bt', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'bul', 'bulan', 'bung', 'byk', 'cara', 'caranya', 'cepat', 'cer', 'cikgu', 'ckp', 'cuba', 'cukup', 'cukupkah', 'cukuplah', 'cuma', 'dah', 'dahulu', 'dalam', 'dalamnya', 'dan', 'dapat', 'dapati', 'dapatkah', 'dapatlah', 'dari', 'daripada', 'daripadaku', 'daripadamu', 'daripadanya', 'datang', 'dato', 'datuk', 'dekat', 'demi', 'demikian', 'demikianlah', 'den', 'dengan', 'dengannya', 'depan', 'dew', 'dgn', 'di', 'dia', 'diakhiri', 'diakhirinya', 'dialah', 'diantara', 'diantaranya', 'diberi', 'diberikan', 'diberikannya', 'dibuat', 'dibuatnya', 'didapat', 'didapati', 'didatangkan', 'digunakan', 'diibaratkan', 'diibaratkannya', 'diingat', 'diingatkan', 'diinginkan', 'dijawab', 'dijelaskan', 'dijelaskannya', 'dikarenakan', 'dikatakan', 'dikatakannya', 'dikerjakan', 'diketahui', 'diketahuinya', 'dikira', 'dilakukan', 'dilalui', 'dilihat', 'dimaksud', 'dimaksudkan', 'dimaksudkannya', 'dimaksudnya', 'dimanakah', 'diminta', 'dimintai', 'dimisalkan', 'dimulai', 'dimulailah', 'dimulainya', 'dimungkinkan', 'dini', 'dipastikan', 'diperbuat', 'diperbuatnya', 'dipergunakan', 'diperkirakan', 'diperlihatkan', 'diperlukan', 'diperlukannya', 'dipersoalkan', 'dipertanyakan', 'dipunyai', 'diri', 'dirinya', 'disampaikan', 'disebabkan', 'disebut', 'disebutkan', 'disebutkannya', 'disini', 'disinilah', 'ditambahkan', 'ditandaskan', 'ditanya', 'ditanyai', 'ditanyakan', 'ditegaskan', 'ditujukan', 'ditunjuk', 'ditunjuki', 'ditunjukkan', 'ditunjukkannya', 'ditunjuknya', 'dituturkan', 'dituturkannya', 'diucapkan', 'diucapkannya', 'diungkapkan', 'dlm', 'dong', 'dont', 'dorang', 'dpt', 'dr', 'dsp', 'dua', 'dulu', 'ehh', 'empat', 'enam', 'eng', 'enggak', 'enggaknya', 'engkau', 'engkaukah', 'engkaulah', 'engkaupun', 'entah', 'entahlah', 'even', 'ever', 'gg', 'got', 'guna', 'gunakan', 'hadapan', 'hai', 'haji', 'hal', 'hamba', 'hampir', 'hampir-hampir', 'hanya', 'hanyalah', 'haram', 'haramm', 'harap', 'harem', 'haremm', 'hari', 'harus', 'haruslah', 'harusnya', 'helai', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'hj', 'hoi', 'huih', 'ia', 'iaitu', 'ialah', 'ianya', 'ibarat', 'ibaratkan', 'ibaratnya', 'ibu', 'ikut', 'ingat', 'ingat-ingat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'int', 'ir', 'itu', 'itukah', 'itulah', 'jadi', 'jadilah', 'jadinya', 'jangan', 'jangankan', 'janganlah', 'jauh', 'jawab', 'jawaban', 'jawabnya', 'jd', 'jelas', 'jelaskan', 'jelaslah', 'jelasnya', 'jemput', 'jgn', 'jika', 'jikalau', 'jom', 'joom', 'jua', 'juapun', 'juga', 'jumlah', 'jumlahnya', 'justeru', 'justru', 'juta', 'kadang', 'kak', 'kakak', 'kala', 'kalakian', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamikah', 'kamilah', 'kamipun', 'kamu', 'kamukah', 'kamulah', 'kamupun', 'kan', 'kanan', 'kapan', 'kapankah', 'kapanpun', 'karena', 'karenanya', 'kasus', 'kat', 'kata', 'katakan', 'katakanlah', 'katanya', 'kau', 'ke', 'keadaan', 'keb', 'kebetulan', 'kecil', 'kecuali', 'kedua', 'keduanya', 'keinginan', 'keja', 'keje', 'kelak', 'kelamaan', 'kelihatan', 'kelihatannya', 'kelima', 'keluar', 'kembali', 'kemudian', 'kemungkinan', 'kemungkinannya', 'kenapa', 'kepada', 'kepadaku', 'kepadakulah', 'kepadamu', 'kepadanya', 'kepadanyalah', 'kerana', 'kerananya', 'kesampaian', 'kesan', 'keseluruhan', 'keseluruhannya', 'keterlaluan', 'ketika', 'ketul', 'khususnya', 'kini', 'kinilah', 'kira', 'kira-kira', 'kiranya', 'kiri', 'kita', 'kitalah', 'kok', 'kosong', 'kpd', 'ku', 'kurang', 'lagi', 'lagian', 'lah', 'lain', 'lainnya', 'laksanabagai', 'lalu', 'lama', 'lamanya', 'langsung', 'lanjut', 'lanjutnya', 'lapan', 'last', 'lebih', 'leh', 'lena', 'lepas', 'let', 'lewat', 'lima', 'lol', 'luar', 'macam', 'maha', 'mahu', 'mahukah', 'mahupun', 'mak', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'malam', 'mama', 'mampu', 'mampukah', 'mana', 'manakah', 'manakala', 'manalagi', 'manapun', 'masa', 'masalah', 'masalahnya', 'masih', 'masihkah', 'masing', 'masing-masing', 'mau', 'maupun', 'mcm', 'md', 'meh', 'mejar', 'melainkan', 'melakukan', 'melalui', 'melihat', 'melihatnya', 'memang', 'memastikan', 'memberi', 'memberikan', 'membuat', 'memerlukan', 'memihak', 'meminta', 'memintakan', 'memisalkan', 'memperbuat', 'mempergunakan', 'memperkirakan', 'memperlihatkan', 'mempersiapkan', 'mempersoalkan', 'mempertanyakan', 'mempunyai', 'memulai', 'memungkinkan', 'menaiki', 'menambahkan', 'menandaskan', 'menanti', 'menanti-nanti', 'menantikan', 'menanya', 'menanyai', 'menanyakan', 'mendapat', 'mendapati', 'mendapatkan', 'mendatang', 'mendatangi', 'mendatangkan', 'menegaskan', 'mengadakan', 'mengakhiri', 'mengapa', 'mengapakah', 'mengatakan', 'mengatakannya', 'mengenai', 'mengerjakan', 'mengetahui', 'menggunakan', 'menghendaki', 'mengibaratkan', 'mengibaratkannya', 'mengingat', 'mengingatkan', 'menginginkan', 'mengira', 'mengucapkan', 'mengucapkannya', 'mengungkapkan', 'menjadi', 'menjawab', 'menjelaskan', 'menuju', 'menunjuk', 'menunjuki', 'menunjukkan', 'menunjuknya', 'menurut', 'menuturkan', 'menyampaikan', 'menyangkut', 'menyatakan', 'menyebabkan', 'menyebabkannya', 'menyebutkan', 'menyeluruh', 'menyiapkan', 'merasa', 'mereka', 'merekalah', 'merekapun', 'merupakan', 'meski', 'meskipun', 'mesti', 'met', 'meyakini', 'meyakinkan', 'minta', 'mirip', 'misal', 'misalkan', 'misalnya', 'mmg', 'mu', 'mula', 'mulai', 'mulailah', 'mulanya', 'mungkin', 'mungkinkah', 'nah', 'naik', 'nak', 'namun', 'nanti', 'nantinya', 'nenek', 'nescaya', 'nian', 'niscaya', 'nk', 'not', 'nya', 'nyaris', 'nyatanya', 'olah', 'oleh', 'olehnya', 'orang', 'org', 'pada', 'padahal', 'padamu', 'padanya', 'pagi', 'pak', 'paling', 'panjang', 'pantas', 'para', 'pasti', 'pastilah', 'pastu', 'patik', 'patut', 'patutkah', 'penting', 'pentingnya', 'per', 'percuma', 'pergh', 'perghh', 'pergilah', 'perkara', 'perkaranya', 'perlahan', 'perlu', 'perlukah', 'perlunya', 'pernah', 'persoalan', 'pertama', 'pertama-tama', 'pertanyaan', 'pertanyakan', 'petang', 'photo', 'pihak', 'pihaknya', 'pon', 'prof', 'puan', 'pukul', 'pula', 'puluh', 'pun', 'punya', 'rasa', 'rasanya', 'rata', 'ratus', 'rm', 'rupanya', 'saat', 'saatnya', 'sahaja', 'sajalah', 'saje', 'salam', 'saling', 'sama', 'sama-sama', 'samakah', 'sambil', 'sampai', 'sampai-sampai', 'sampaikan', 'sana', 'sane', 'sangat', 'sangatlah', 'satu', 'saya', 'sayalah', 'se', 'seandainya', 'sebab', 'sebabnya', 'sebagai', 'sebagaimana', 'sebagainya', 'sebagian', 'sebaik', 'sebaik-baiknya', 'sebaiknya', 'sebaliknya', 'sebanyak', 'sebegini', 'sebegitu', 'sebelas', 'sebelum', 'sebelummu', 'sebelumnya', 'sebenarnya', 'sebentar', 'seberapa', 'sebesar', 'sebetulnya', 'sebilan', 'sebisanya', 'sebuah', 'sebut', 'sebutlah', 'sebutnya', 'secara', 'secukupnya', 'sedang', 'sedangkan', 'sedemikian', 'sedikit', 'sedikitnya', 'sedikitpun', 'seenaknya', 'segala', 'segalanya', 'segera', 'seharusnya', 'sehingga', 'seingat', 'sejak', 'sejauh', 'sejenak', 'sejumlah', 'sejuta', 'sekadar', 'sekadarnya', 'sekali', 'sekali-kali', 'sekalian', 'sekaligus', 'sekalipun', 'sekarang', 'sekecil', 'seketika', 'sekiranya', 'sekitar', 'sekitarnya', 'sekurang-kurangnya', 'sekurangnya', 'sela', 'selain', 'selaku', 'selalu', 'selama', 'selama-lamanya', 'selamanya', 'selanjutnya', 'selepas', 'seluruh', 'seluruhnya', 'semacam', 'semakin', 'semalam', 'semampu', 'semampunya', 'semasa', 'semasih', 'semata', 'semata-mata', 'semaunya', 'sembilan', 'semenjak', 'sementara', 'semisal', 'semisalnya', 'sempat', 'semua', 'semuanya', 'semula', 'senantiasa', 'sendiri', 'sendirian', 'sendirinya', 'sentiasa', 'seolah', 'seolah-olah', 'seorang', 'seorangpun', 'sepanjang', 'sepantasnya', 'sepantasnyalah', 'separuh', 'sepatutnya', 'seperlunya', 'seperti', 'sepertinya', 'sepihak', 'sepuluh', 'seratus', 'seraya', 'seribu', 'sering', 'seringnya', 'serta', 'serupa', 'sesaat', 'sesama', 'sesampai', 'sesegera', 'sesekali', 'seseorang', 'sesiapa', 'sesuatu', 'sesuatunya', 'sesudah', 'sesudahnya', 'sesungguhnya', 'sesungguhnyakah', 'setelah', 'setempat', 'setengah', 'seterusnya', 'setiap', 'setiba', 'setibanya', 'setidak-tidaknya', 'setidaknya', 'setinggi', 'seusai', 'sewaktu', 'shit', 'siang', 'siap', 'siapa', 'siapakah', 'siapapun', 'sila', 'sini', 'sinilah', 'sisi', 'situ', 'situlah', 'soal', 'soalnya', 'sri', 'suatu', 'sudah', 'sudahkah', 'sudahlah', 'suku', 'sungguh', 'sungguhpun', 'supaya', 'syahdah', 'tadi', 'tadinya', 'tahu', 'tahukah', 'tahun', 'tak', 'takda', 'takde', 'tambah', 'tambahnya', 'tampak', 'tampaknya', 'tan', 'tandas', 'tandasnya', 'tanpa', 'tanya', 'tanyakan', 'tanyakanlah', 'tanyanya', 'tapi', 'tegas', 'tegasnya', 'telah', 'tempat', 'tengah', 'tengku', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tepat', 'tepi', 'terakhir', 'terasa', 'terbanyak', 'terdahulu', 'terdapat', 'terdiri', 'terhadap', 'terhadapmu', 'terhadapnya', 'teringat', 'teringat-ingat', 'terjadi', 'terjadilah', 'terjadinya', 'terkira', 'terlalu', 'terlebih', 'terlihat', 'termasuk', 'ternyata', 'terpaksa', 'tersampaikan', 'tersebut', 'tersebutlah', 'tertentu', 'tertuju', 'terus', 'terutama', 'tetap', 'tetapi', 'tgh', 'tiada', 'tiadakah', 'tiadalah', 'tiap', 'tiap-tiap', 'tiba', 'tiba-tiba', 'tidak', 'tidakkah', 'tidaklah', 'tiga', 'tiga suku', 'tinggi', 'toh', 'tok', 'tolong', 'tryna', 'tuan', 'tuanku', 'tujuh', 'tun', 'tunjuk', 'turut', 'tutur', 'tuturnya', 'ucap', 'ucapnya', 'ujar', 'ujarnya', 'umpama', 'umum', 'umumnya', 'ungkap', 'ungkapnya', 'untuk', 'untukmu', 'usah', 'usahlah', 'usai', 'ust', 'ustaz', 'ustazah', 'utara', 'utk', 'video', 'waalaikumussalam', 'waduh', 'wah', 'wahai', 'waktu', 'waktunya', 'walau', 'walaupun', 'wan', 'wasalam', 'wdir', 'woi', 'wong', 'wsalam', 'wui', 'xda', 'xde', 'xkan', 'xkira', 'xleh', 'xtahu', 'ya', 'yaini', 'yaitu', 'yakin', 'yakni', 'yang', 'yb', 'yg'}, ngram: Tuple[int, int] = (1, 3), batch_size: int = 10)[source]

Use attention from transformer model to do topic modelling based on corpus / list of strings given.

Parameters
  • corpus (list) –

  • n_topics (int, (default=10)) – size of decomposition column.

  • vectorizer (object) –

  • stemming (function, (default=malaya.stem.sastrawi)) – function to stem the corpus.

  • cleaning (function, (default=malaya.text.function.simple_textcleaning)) – function to clean the corpus.

  • stop_words (list, (default=malaya.text.function.STOPWORDS)) – list of stop words to remove.

  • ngram (tuple, (default=(1,3))) – n-grams size to train a corpus.

  • batch_size (int, (default=10)) – size of strings for each vectorization and attention.

Returns

result

Return type

malaya.topic_modelling.ATTENTION_TOPIC class

class malaya.topic_model.ATTENTION_TOPIC[source]
top_topics(len_topic: int, top_n: int = 10, return_df: bool = True)[source]

Print important topics based on decomposition.

Parameters

len_topic (int) –

get_topics(len_topic: int)[source]

Return important topics based on decomposition.

Parameters

len_topic (int) –

Returns

result

Return type

List[str]

class malaya.topic_model.DEEP_TOPIC[source]
visualize_topics(notebook_mode: int = False, mds: str = 'pcoa')[source]

Print important topics based on decomposition.

Parameters

mds (str, optional (default='pcoa')) –

2D Decomposition. Allowed values:

  • 'pcoa' - Dimension reduction via Jensen-Shannon Divergence & Principal Coordinate Analysis (aka Classical Multidimensional Scaling)

  • 'mmds' - Dimension reduction via Multidimensional scaling

  • 'tsne' - Dimension reduction via t-distributed stochastic neighbor embedding

top_topics(len_topic: int, top_n: int = 10, return_df: bool = True)[source]

Print important topics based on decomposition.

Parameters

len_topic (int) –

get_topics(len_topic: int)[source]

Return important topics based on decomposition.

Parameters

len_topic (int) –

Returns

result

Return type

List[str]

get_sentences(len_sentence: int, k: int = 0)[source]

Return important sentences related to selected column based on decomposition.

Parameters
  • len_sentence (int) –

  • k (int, (default=0)) – index of decomposition matrix.

Returns

result

Return type

List[str]

class malaya.topic_model.TOPIC[source]
visualize_topics(notebook_mode: bool = False, mds: str = 'pcoa')[source]

Print important topics based on decomposition.

Parameters

mds (str, optional (default='pcoa')) –

2D Decomposition. Allowed values:

  • 'pcoa' - Dimension reduction via Jensen-Shannon Divergence & Principal Coordinate Analysis (aka Classical Multidimensional Scaling)

  • 'mmds' - Dimension reduction via Multidimensional scaling

  • 'tsne' - Dimension reduction via t-distributed stochastic neighbor embedding

top_topics(len_topic: int, top_n: int = 10, return_df: bool = True)[source]

Print important topics based on decomposition.

Parameters

len_topic (int) –

get_topics(len_topic: int)[source]

Return important topics based on decomposition.

Parameters

len_topic (int) –

Returns

result

Return type

List[str]

get_sentences(len_sentence: int, k: int = 0)[source]

Return important sentences related to selected column based on decomposition.

Parameters
  • len_sentence (int) –

  • k (int, (default=0)) – index of decomposition matrix.

Returns

result

Return type

List[str]

malaya.toxicity

malaya.toxicity.available_transformer()[source]

List available transformer toxicity analysis models.

malaya.toxicity.multinomial(**kwargs)[source]

Load multinomial toxicity model.

Returns

result

Return type

malaya.model.ml.MULTILABEL_BAYES class

malaya.toxicity.transformer(model: str = 'xlnet', quantized: bool = False, **kwargs)[source]

Load Transformer toxicity model.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.bert.SIGMOID_BERT class

malaya.transformer

malaya.transformer.available_transformer()[source]

List available transformer models.

malaya.transformer.available_transformer_standard_language()[source]

List available transformer models.

malaya.transformer.load(model: str = 'electra', pool_mode: str = 'last', **kwargs)[source]

Load transformer model.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

    • 'electra' - Google ELECTRA BASE parameters.

    • 'small-electra' - Google ELECTRA SMALL parameters.

  • pool_mode (str, optional (default='last')) –

    Model logits architecture supported. Only usable if model in [‘xlnet’, ‘alxlnet’]. Allowed values:

    • 'last' - last of the sequence.

    • 'first' - first of the sequence.

    • 'mean' - mean of the sequence.

    • 'attn' - attention of the sequence.

Returns

result

Return type

malaya.transformers.* class

malaya.translation.en_ms

malaya.translation.en_ms.available_transformer()[source]

List available transformer models.

malaya.translation.en_ms.transformer(model: str = 'base', quantized: bool = False, **kwargs)[source]

Load transformer encoder-decoder model to translate EN-to-MS.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'small' - Transformer SMALL parameters.

    • 'base' - Transformer BASE parameters.

    • 'large' - Transformer LARGE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.tf.TRANSLATION class

malaya.translation.ms_en

malaya.translation.ms_en.available_transformer()[source]

List available transformer models.

malaya.translation.ms_en.transformer(model: str = 'base', quantized: bool = False, **kwargs)[source]

Load Transformer encoder-decoder model to translate MS-to-EN.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'small' - Transformer SMALL parameters.

    • 'base' - Transformer BASE parameters.

    • 'large' - Transformer LARGE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.tf.TRANSLATION class

malaya.true_case

malaya.true_case.available_transformer()[source]

List available transformer models.

malaya.true_case.transformer(model: str = 'base', quantized: bool = False, **kwargs)[source]

Load transformer encoder-decoder model to True Case.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'small' - Transformer SMALL parameters.

    • 'base' - Transformer BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.tf.TRUE_CASE class

malaya.word2num

malaya.word2num.word2num(string)[source]

Translate from string to number, eg ‘kesepuluh’ -> 10.

Parameters

string (str) –

Returns

result

Return type

int / float

malaya.wordvector

malaya.wordvector.load_wiki()[source]

Return malaya pretrained wikipedia word2vec size 256. https://github.com/huseinzol05/Malaya/tree/master/pretrained-model/wordvector

Returns

result

Return type

tuple(vocabulary, vector)

malaya.wordvector.load_news()[source]

Return malaya pretrained local malaysia news word2vec size 256. https://github.com/huseinzol05/Malaya/tree/master/pretrained-model/wordvector

Returns

result

Return type

tuple(vocabulary, vector)

malaya.wordvector.load_social_media()[source]

Return malaya pretrained local malaysia social media word2vec size 256. https://github.com/huseinzol05/Malaya/tree/master/pretrained-model/wordvector

Returns

result

Return type

tuple(vocabulary, vector)

malaya.wordvector.load_wiki_news_social_media()[source]

Return malaya pretrained local malaysia Wikipedia + Social media + News word2vec size 256. https://github.com/huseinzol05/Malaya/tree/master/pretrained-model/wordvector

Returns

result

Return type

tuple(vocabulary, vector)

malaya.wordvector.load(embed_matrix, dictionary: dict)[source]

Return malaya.wordvector.WORDVECTOR object.

Parameters
  • embed_matrix (numpy array) –

  • dictionary (dictionary) –

Returns

result

Return type

malaya.wordvector.WORDVECTOR object

class malaya.wordvector.WORDVECTOR[source]
get_vector_by_name(word: str)[source]

get vector based on string.

Parameters

word (str) –

Returns

vector

Return type

numpy

tree_plot(labels, figsize: Tuple[int, int] = (7, 7), annotate: bool = True)[source]

plot a tree plot based on output from calculator / n_closest / analogy.

Parameters
  • labels (list) – output from calculator / n_closest / analogy.

  • visualize (bool) – if True, it will render plt.show, else return data.

  • figsize (tuple, (default=(7, 7))) – figure size for plot.

Returns

results

Return type

[embed, labelled]

scatter_plot(labels, centre: str = None, figsize: Tuple[int, int] = (7, 7), plus_minus: int = 25, handoff: float = 5e-05)[source]

plot a scatter plot based on output from calculator / n_closest / analogy.

Parameters
  • labels (list) – output from calculator / n_closest / analogy

  • centre (str, (default=None)) – centre label, if a str, it will annotate in a red color.

  • figsize (tuple, (default=(7, 7))) – figure size for plot.

Returns

list_dictionaries

Return type

list of results

batch_calculator(equations: List[str], num_closest: int = 5, return_similarity: bool = False)[source]

batch calculator parser for word2vec using tensorflow.

Parameters
  • equations (list of str) – Eg, ‘[(mahathir + najib) - rosmah]’

  • num_closest (int, (default=5)) – number of words closest to the result.

Returns

word_list

Return type

list of nearest words

calculator(equation: str, num_closest: int = 5, metric: str = 'cosine', return_similarity: bool = True)[source]

calculator parser for word2vec.

Parameters
  • equation (str) – Eg, ‘(mahathir + najib) - rosmah’

  • num_closest (int, (default=5)) – number of words closest to the result.

  • metric (str, (default='cosine')) – vector distance algorithm.

  • return_similarity (bool, (default=True)) – if True, will return between 0-1 represents the distance.

Returns

word_list

Return type

list of nearest words

batch_n_closest(words: List[str], num_closest: int = 5, return_similarity: bool = False, soft: bool = True)[source]

find nearest words based on a batch of words using Tensorflow.

Parameters
  • words (list) – Eg, [‘najib’,’anwar’]

  • num_closest (int, (default=5)) – number of words closest to the result.

  • return_similarity (bool, (default=True)) – if True, will return between 0-1 represents the distance.

  • soft (bool, (default=True)) – if True, a word not in the dictionary will be replaced with nearest JaroWinkler ratio. if False, it will throw an exception if a word not in the dictionary.

Returns

word_list

Return type

list of nearest words

n_closest(word: str, num_closest: int = 5, metric: str = 'cosine', return_similarity: bool = True)[source]

find nearest words based on a word.

Parameters
  • word (str) – Eg, ‘najib’

  • num_closest (int, (default=5)) – number of words closest to the result.

  • metric (str, (default='cosine')) – vector distance algorithm.

  • return_similarity (bool, (default=True)) – if True, will return between 0-1 represents the distance.

Returns

word_list

Return type

list of nearest words

analogy(a: str, b: str, c: str, num: int = 1, metric: str = 'cosine')[source]

analogy calculation, vb - va + vc.

Parameters
  • a (str) –

  • b (str) –

  • c (str) –

  • num (int, (default=1)) –

  • metric (str, (default='cosine')) – vector distance algorithm.

Returns

word_list

Return type

list of nearest words

project_2d(start: int, end: int)[source]

project word2vec into 2d dimension.

Parameters
  • start (int) –

  • end (int) –

Returns

tsne decomposition

Return type

numpy

network(word: str, num_closest: int = 8, depth: int = 4, min_distance: float = 0.5, iteration: int = 300, figsize: Tuple[int, int] = (15, 15), node_color: str = '#72bbd0', node_factor: int = 50)[source]

plot a social network based on word given

Parameters
  • word (str) – centre of social network.

  • num_closest (int, (default=8)) – number of words closest to the node.

  • depth (int, (default=4)) – depth of social network. More deeper more expensive to calculate, big^O(num_closest ** depth).

  • min_distance (float, (default=0.5)) – minimum distance among nodes. Increase the value to increase the distance among nodes.

  • iteration (int, (default=300)) – number of loops to train the social network to fit min_distace.

  • figsize (tuple, (default=(15, 15))) – figure size for plot.

  • node_color (str, (default='#72bbd0')) – color for nodes.

  • node_factor (int, (default=10)) – size factor for depth nodes. Increase this value will increase nodes sizes based on depth.

Returns

g

Return type

networkx graph object

malaya.zero_shot.classification

malaya.zero_shot.classification.available_transformer()[source]

List available transformer zero-shot models.

malaya.zero_shot.classification.transformer(model: str = 'bert', quantized: bool = False, **kwargs)[source]

Load Transformer zero-shot model.

Parameters
  • model (str, optional (default='bert')) –

    Model architecture supported. Allowed values:

    • 'bert' - Google BERT BASE parameters.

    • 'tiny-bert' - Google BERT TINY parameters.

    • 'albert' - Google ALBERT BASE parameters.

    • 'tiny-albert' - Google ALBERT TINY parameters.

    • 'xlnet' - Google XLNET BASE parameters.

    • 'alxlnet' - Malaya ALXLNET BASE parameters.

  • quantized (bool, optional (default=False)) – if True, will load 8-bit quantized model. Quantized model not necessary faster, totally depends on the machine.

Returns

result

Return type

malaya.model.bert.ZEROSHOT_BERT class

malaya.transformers.albert

malaya.transformers.albert.load(model: str = 'albert', **kwargs)[source]

Load albert model.

Parameters

model (str, optional (default='base')) –

Model architecture supported. Allowed values:

  • 'albert' - base albert-bahasa released by Malaya.

  • 'tiny-albert' - tiny bert-bahasa released by Malaya.

Returns

result

Return type

malaya.transformers.albert.Model class

class malaya.transformers.albert.Model[source]
vectorize(strings: List[str])[source]

Vectorize string inputs using bert attention.

Parameters

strings (List[str]) –

Returns

result

Return type

np.array

attention(strings: List[str], method: str = 'last', **kwargs)[source]

Get attention string inputs from bert attention.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

Returns

result

Return type

List[List[Tuple[str, float]]]

visualize_attention(string: str)[source]

Visualize attention.

Parameters

string (str) –

malaya.transformers.alxlnet

malaya.transformers.alxlnet.load(model: str = 'alxlnet', pool_mode: str = 'last', **kwargs)[source]

Load alxlnet model.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'alxlnet' - XLNET architecture from google + Malaya.

  • pool_mode (str, optional (default='last')) –

    Model logits architecture supported. Allowed values:

    • 'last' - last of the sequence.

    • 'first' - first of the sequence.

    • 'mean' - mean of the sequence.

    • 'attn' - attention of the sequence.

Returns

result

Return type

malaya.transformers.alxlnet.Model class

class malaya.transformers.alxlnet.Model[source]
vectorize(strings: List[str])[source]

Vectorize string inputs using bert attention.

Parameters

strings (List[str]) –

Returns

result

Return type

np.array

attention(strings: List[str], method: str = 'last', **kwargs)[source]

Get attention string inputs from bert attention.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

Returns

result

Return type

List[List[Tuple[str, float]]]

visualize_attention(string: str)[source]

Visualize attention.

Parameters

string (str) –

malaya.transformers.bert

malaya.transformers.bert.load(model: str = 'base', **kwargs)[source]

Load bert model.

Parameters

model (str, optional (default='base')) –

Model architecture supported. Allowed values:

  • 'bert' - base bert-bahasa released by Malaya.

  • 'tiny-bert' - tiny bert-bahasa released by Malaya.

Returns

result

Return type

malaya.transformers.bert.Model class

class malaya.transformers.bert.Model[source]
vectorize(strings: List[str])[source]

Vectorize string inputs using bert attention.

Parameters

strings (List[str]) –

Returns

result

Return type

np.array

attention(strings: List[str], method: str = 'last', **kwargs)[source]

Get attention string inputs from bert attention.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

Returns

result

Return type

List[List[Tuple[str, float]]]

visualize_attention(string: str)[source]

Visualize attention.

Parameters

string (str) –

malaya.transformers.electra

malaya.transformers.electra.load(model: str = 'electra', **kwargs)[source]

Load electra model.

Parameters

model (str, optional (default='base')) –

Model architecture supported. Allowed values:

  • 'electra' - base electra-bahasa released by Malaya.

  • 'small-electra' - small electra-bahasa released by Malaya.

Returns

result

Return type

malaya.transformers.electra.Model class

class malaya.transformers.electra.Model[source]
vectorize(strings: List[str])[source]

Vectorize string inputs using bert attention.

Parameters

strings (List[str]) –

Returns

result

Return type

np.array

attention(strings: List[str], method: str = 'last', **kwargs)[source]

Get attention string inputs from bert attention.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

Returns

result

Return type

List[List[Tuple[str, float]]]

visualize_attention(string: str)[source]

Visualize attention.

Parameters

string (str) –

malaya.transformers.gpt2

malaya.transformers.gpt2.load(model='345M', generate_length=100, temperature=1.0, top_k=40, **kwargs)[source]

Load gpt2 model.

Parameters
  • model (str, optional (default='345M')) –

    Model architecture supported. Allowed values:

    • '117M' - GPT2 117M parameters.

    • '345M' - GPT2 345M parameters.

  • generate_length (int, optional (default=256)) – length of sentence to generate.

  • temperature (float, optional (default=1.0)) – temperature value, value should between 0 and 1.

  • top_k (int, optional (default=40)) – top-k in nucleus sampling selection.

Returns

result

Return type

malaya.transformers.gpt2.Model class

class malaya.transformers.gpt2.Model[source]
generate(string: str)[source]

generate a text given an initial string.

Parameters

string (str) –

Returns

result

Return type

str

malaya.transformers.xlnet

malaya.transformers.xlnet.load(model: str = 'xlnet', pool_mode: str = 'last', **kwargs)[source]

Load xlnet model.

Parameters
  • model (str, optional (default='base')) –

    Model architecture supported. Allowed values:

    • 'xlnet' - XLNET architecture from google.

  • pool_mode (str, optional (default='last')) –

    Model logits architecture supported. Allowed values:

    • 'last' - last of the sequence.

    • 'first' - first of the sequence.

    • 'mean' - mean of the sequence.

    • 'attn' - attention of the sequence.

Returns

result

Return type

malaya.transformers.xlnet.Model class

class malaya.transformers.xlnet.Model[source]
vectorize(strings: List[str])[source]

Vectorize string inputs using bert attention.

Parameters

strings (List[str]) –

Returns

result

Return type

np.array

attention(strings: List[str], method: str = 'last', **kwargs)[source]

Get attention string inputs from bert attention.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

Returns

result

Return type

List[List[Tuple[str, float]]]

visualize_attention(string: str)[source]

Visualize attention.

Parameters

string (str) –

malaya.model.t5

class malaya.model.t5.SUMMARIZATION[source]
summarize(string: str, mode: str = 'ringkasan', postprocess: bool = True, **kwargs)[source]

Summarize a string. Decoder is beam decoder with beam width size 1, alpha 0.5 .

Parameters
  • string (str) –

  • mode (str) –

    mode for summarization. Allowed values:

    • 'ringkasan' - summarization for long sentence, eg, news summarization.

    • 'tajuk' - title summarization for long sentence, eg, news title.

  • postprocess (bool, optional (default=True)) – If True, will filter sentence generated using ROUGE score and removed international news publisher.

Returns

result

Return type

str

class malaya.model.t5.GENERATOR[source]
generate(strings: List[str])[source]

generate a long text given a isi penting. Decoder is beam decoder with beam width size 1, alpha 0.5 .

Parameters

strings (List[str]) –

Returns

result

Return type

str

class malaya.model.t5.PARAPHRASE[source]
paraphrase(string: str, split_fullstop: bool = True)[source]

paraphrase a string. Decoder is beam decoder with beam width size 1, alpha 0.5 .

Parameters
  • string (str) –

  • split_fullstop (bool, (default=True)) – if True, will generate paraphrase for each strings splitted by fullstop.

Returns

result

Return type

str

malaya.model.tf

class malaya.model.tf.DEEP_LANG[source]
predict(strings: List[str])[source]

classify list of strings.

Parameters

strings (List[str]) –

Returns

result

Return type

List[str]

predict_proba(strings: List[str])[source]

classify list of strings and return probability.

Parameters

strings (List[str]) –

Returns

result

Return type

List[dict[str, float]]

class malaya.model.tf.TRANSLATION[source]
translate(strings: List[str], beam_search: bool = True)[source]

translate list of strings.

Parameters
  • strings (List[str]) –

  • beam_search (bool, (optional=True)) – If True, use beam search decoder, else use greedy decoder.

Returns

result

Return type

List[str]

class malaya.model.tf.CONSTITUENCY[source]
vectorize(string: str)[source]

vectorize a string.

Parameters

string (List[str]) –

Returns

result

Return type

np.array

parse_nltk_tree(string: str)[source]

Parse a string into NLTK Tree, to make it useful, make sure you already installed tktinker.

Parameters

string (str) –

Returns

result

Return type

nltk.Tree object

parse_tree(string)[source]

Parse a string into string treebank format.

Parameters

string (str) –

Returns

result

Return type

malaya.text.trees.InternalTreebankNode class

class malaya.model.tf.TRUE_CASE[source]
true_case(strings: List[str], beam_search: bool = True)[source]

True case strings. Example, “saya nak makan di us makanan di sana sedap” -> “Saya nak makan di US, makanan di sana sedap.”

Parameters
  • strings (List[str]) –

  • beam_search (bool, (optional=True)) – If True, use beam search decoder, else use greedy decoder.

Returns

result

Return type

List[str]

class malaya.model.tf.PARAPHRASE[source]
paraphrase(strings: List[str], decoder: str = 'greedy', top_p: float = 0.7)[source]

Paraphrase strings.

Parameters
  • strings (List[str]) –

  • decoder (str) –

    mode for summarization decoder. Allowed values:

    • 'greedy' - Beam width size 1, alpha 0.

    • 'beam' - Beam width size 3, alpha 0.5 .

    • 'nucleus' - Beam width size 1, with nucleus sampling.

  • top_p (float, (default=0.7)) – cumulative distribution and cut off as soon as the CDF exceeds top_p. this is only useful if use nucleus decoder.

Returns

result

Return type

List[str]

malaya.model.ml

class malaya.model.ml.MULTICLASS_BAYES[source]
predict(strings: List[str])[source]

classify list of strings.

Parameters

strings (List[str]) –

Returns

result

Return type

List[str]

predict_proba(strings: List[str])[source]

classify list of strings and return probability.

Parameters

strings (List[str]) –

Returns

result

Return type

List[dict[str, float]]

class malaya.model.ml.BINARY_BAYES[source]
predict(strings: List[str], add_neutral: bool = True)[source]

classify list of strings.

Parameters
  • strings (List[str]) –

  • add_neutral (bool, optional (default=True)) – if True, it will add neutral probability.

Returns

result

Return type

List[str]

predict_proba(strings: List[str], add_neutral: bool = True)[source]

classify list of strings and return probability.

Parameters
  • strings (List[str]) –

  • add_neutral (bool, optional (default=True)) – if True, it will add neutral probability.

Returns

result

Return type

List[dict[str, float]]

class malaya.model.ml.MULTILABEL_BAYES[source]
predict(strings: List[str])[source]

classify list of strings.

Parameters

strings (List[str]) –

Returns

result

Return type

List[List[str]]

predict_proba(strings: List[str])[source]

classify list of strings and return probability.

Parameters

strings (list) –

Returns

result

Return type

List[dict[str, float]]

malaya.model.bert

class malaya.model.bert.BINARY_BERT[source]
vectorize(strings: List[str], method: str = 'first')[source]

vectorize list of strings.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='first')) –

    Vectorization layer supported. Allowed values:

    • 'last' - vector from last sequence.

    • 'first' - vector from first sequence.

    • 'mean' - average vectors from all sequences.

    • 'word' - average vectors based on tokens.

Returns

result

Return type

np.array

predict(strings: List[str], add_neutral: bool = True)[source]

classify list of strings.

Parameters
  • strings (List[str]) –

  • add_neutral (bool, optional (default=True)) – if True, it will add neutral probability.

Returns

result

Return type

List[str]

predict_proba(strings: List[str], add_neutral: bool = True)[source]

classify list of strings and return probability.

Parameters
  • strings (List[str]) –

  • add_neutral (bool, optional (default=True)) – if True, it will add neutral probability.

Returns

result

Return type

List[dict[str, float]]

predict_words(string: str, method: str = 'last', visualization: bool = True)[source]

classify words.

Parameters
  • string (str) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

  • visualization (bool, optional (default=True)) – If True, it will open the visualization dashboard.

Returns

result

Return type

dict

class malaya.model.bert.MULTICLASS_BERT[source]
vectorize(strings: List[str], method: str = 'first')[source]

vectorize list of strings.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='first')) –

    Vectorization layer supported. Allowed values:

    • 'last' - vector from last sequence.

    • 'first' - vector from first sequence.

    • 'mean' - average vectors from all sequences.

    • 'word' - average vectors based on tokens.

Returns

result

Return type

np.array

predict(strings: List[str])[source]

classify list of strings.

Parameters
  • strings (List[str]) –

  • add_neutral (bool, optional (default=True)) –

Returns

result

Return type

List[str]

predict_proba(strings: List[str])[source]

classify list of strings and return probability.

Parameters

strings (List[str]) –

Returns

result

Return type

List[dict[str, float]]

predict_words(string: str, method: str = 'last', visualization: bool = True)[source]

classify words.

Parameters
  • string (str) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

  • visualization (bool, optional (default=True)) – If True, it will open the visualization dashboard.

Returns

result

Return type

dict

class malaya.model.bert.SIGMOID_BERT[source]
vectorize(strings: List[str], method: str = 'first')[source]

vectorize list of strings.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='first')) –

    Vectorization layer supported. Allowed values:

    • 'last' - vector from last sequence.

    • 'first' - vector from first sequence.

    • 'mean' - average vectors from all sequences.

    • 'word' - average vectors based on tokens.

Returns

result

Return type

np.array

predict(strings: List[str])[source]

classify list of strings.

Parameters

strings (List[str]) –

Returns

result

Return type

List[List[str]]

predict_proba(strings: List[str])[source]

classify list of strings and return probability.

Parameters

strings (List[str]) –

Returns

result

Return type

List[dict[str, float]]

predict_words(string: str, method: str = 'last', visualization: bool = True)[source]

classify words.

Parameters
  • string (str) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

  • visualization (bool, optional (default=True)) – If True, it will open the visualization dashboard.

Returns

dictionary

Return type

results

class malaya.model.bert.SIAMESE_BERT[source]
vectorize(strings: List[str])[source]

Vectorize list of strings.

Parameters

strings (List[str]) –

Returns

result

Return type

np.array

predict_proba(strings_left: List[str], strings_right: List[str])[source]

calculate similarity for two different batch of texts.

Parameters
  • strings_left (List[str]) –

  • strings_right (List[str]) –

Returns

list

Return type

list of float

class malaya.model.bert.TAGGING_BERT[source]
vectorize(string: str)[source]

vectorize a string.

Parameters

string (List[str]) –

Returns

result

Return type

np.array

analyze(string: str)[source]

Analyze a string.

Parameters

string (str) –

Returns

result

Return type

{‘words’: List[str], ‘tags’: [{‘text’: ‘text’, ‘type’: ‘location’, ‘score’: 1.0, ‘beginOffset’: 0, ‘endOffset’: 1}]}

predict(string: str)[source]

Tag a string.

Parameters

string (str) –

Returns

result

Return type

Tuple[str, str]

class malaya.model.bert.DEPENDENCY_BERT[source]
vectorize(string: str)[source]

vectorize a string.

Parameters

string (List[str]) –

Returns

result

Return type

np.array

predict(string: str)[source]

Tag a string.

Parameters

string (str) –

Returns

result

Return type

Tuple

class malaya.model.bert.ZEROSHOT_BERT[source]
vectorize(strings: List[str], labels: List[str], method: str = 'first')[source]

vectorize a string.

Parameters
  • strings (List[str]) –

  • labels (List[str]) –

  • method (str, optional (default='first')) –

    Vectorization layer supported. Allowed values:

    • 'last' - vector from last sequence.

    • 'first' - vector from first sequence.

    • 'mean' - average vectors from all sequences.

    • 'word' - average vectors based on tokens.

Returns

result

Return type

np.array

predict_proba(strings: List[str], labels: List[str])[source]

classify list of strings and return probability.

Parameters
  • strings (List[str]) –

  • labels (List[str]) –

Returns

list

Return type

list of float

class malaya.model.bert.PARAPHRASE_BERT[source]
paraphrase(string: str, split_fullstop: bool = True)[source]

Paraphrase a string.

Parameters
  • string (str) –

  • split_fullstop (bool, (default=True)) – if True, will generate paraphrase for each strings splitted by fullstop.

Returns

result

Return type

str

malaya.model.xlnet

class malaya.model.xlnet.BINARY_XLNET[source]
vectorize(strings: List[str], method: str = 'first')[source]

vectorize list of strings.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='first')) –

    Vectorization layer supported. Allowed values:

    • 'last' - vector from last sequence.

    • 'first' - vector from first sequence.

    • 'mean' - average vectors from all sequences.

    • 'word' - average vectors based on tokens.

Returns

result

Return type

np.array

predict(strings: List[str], add_neutral: bool = True)[source]

classify list of strings.

Parameters
  • strings (List[str]) –

  • add_neutral (bool, optional (default=True)) – if True, it will add neutral probability.

Returns

result

Return type

List[str]

predict_proba(strings: List[str], add_neutral: bool = True)[source]

classify list of strings and return probability.

Parameters
  • strings (List[str]) –

  • add_neutral (bool, optional (default=True)) – if True, it will add neutral probability.

Returns

result

Return type

List[dict[str, float]]

predict_words(string: str, method: str = 'last', visualization: bool = True)[source]

classify words.

Parameters
  • string (str) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

  • visualization (bool, optional (default=True)) – If True, it will open the visualization dashboard.

Returns

result

Return type

dict

class malaya.model.xlnet.MULTICLASS_XLNET[source]
vectorize(strings: List[str], method: str = 'first')[source]

vectorize list of strings.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='first')) –

    Vectorization layer supported. Allowed values:

    • 'last' - vector from last sequence.

    • 'first' - vector from first sequence.

    • 'mean' - average vectors from all sequences.

    • 'word' - average vectors based on tokens.

Returns

result

Return type

np.array

predict(strings: List[str])[source]

classify list of strings.

Parameters

strings (List[str]) –

Returns

result

Return type

List[str]

predict_proba(strings: List[str])[source]

classify list of strings and return probability.

Parameters

strings (List[str]) –

Returns

result

Return type

List[dict[str, float]]

predict_words(string: str, method: str = 'last', visualization: bool = True)[source]

classify words.

Parameters
  • string (str) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

  • visualization (bool, optional (default=True)) – If True, it will open the visualization dashboard.

Returns

result

Return type

dict

class malaya.model.xlnet.SIGMOID_XLNET[source]
vectorize(strings: List[str], method: str = 'first')[source]

vectorize list of strings.

Parameters
  • strings (List[str]) –

  • method (str, optional (default='first')) –

    Vectorization layer supported. Allowed values:

    • 'last' - vector from last sequence.

    • 'first' - vector from first sequence.

    • 'mean' - average vectors from all sequences.

    • 'word' - average vectors based on tokens.

Returns

result

Return type

np.array

predict(strings: List[str])[source]

classify list of strings.

Parameters

strings (List[str]) –

Returns

result

Return type

List[List[str]]

predict_proba(strings: List[str])[source]

classify list of strings and return probability.

Parameters

strings (List[str]) –

Returns

result

Return type

List[dict[str, float]]

predict_words(string: str, method: str = 'last', visualization: bool = True)[source]

classify words.

Parameters
  • string (str) –

  • method (str, optional (default='last')) –

    Attention layer supported. Allowed values:

    • 'last' - attention from last layer.

    • 'first' - attention from first layer.

    • 'mean' - average attentions from all layers.

  • visualization (bool, optional (default=True)) – If True, it will open the visualization dashboard.

Returns

dictionary

Return type

results

class malaya.model.xlnet.SIAMESE_XLNET[source]
vectorize(strings: List[str])[source]

Vectorize list of strings.

Parameters

strings (List[str]) –

Returns

result

Return type

np.array

predict_proba(strings_left: List[str], strings_right: List[str])[source]

calculate similarity for two different batch of texts.

Parameters
  • string_left (List[str]) –

  • string_right (List[str]) –

Returns

result

Return type

List[float]

class malaya.model.xlnet.TAGGING_XLNET[source]
vectorize(string: str)[source]

vectorize a string.

Parameters

string (List[str]) –

Returns

result

Return type

np.array

analyze(string: str)[source]

Analyze a string.

Parameters

string (str) –

Returns

result

Return type

{‘words’: List[str], ‘tags’: [{‘text’: ‘text’, ‘type’: ‘location’, ‘score’: 1.0, ‘beginOffset’: 0, ‘endOffset’: 1}]}

predict(string: str)[source]

Tag a string.

Parameters

string (str) –

Returns

result

Return type

Tuple[str, str]

class malaya.model.xlnet.DEPENDENCY_XLNET[source]
vectorize(string: str)[source]

vectorize a string.

Parameters

string (List[str]) –

Returns

result

Return type

np.array

predict(string: str)[source]

Tag a string.

Parameters

string (str) –

Returns

result

Return type

Tuple

class malaya.model.xlnet.ZEROSHOT_XLNET[source]
vectorize(strings: List[str], labels: List[str], method: str = 'first')[source]

vectorize a string.

Parameters
  • strings (List[str]) –

  • labels (List[str]) –

  • method (str, optional (default='first')) –

    Vectorization layer supported. Allowed values:

    • 'last' - vector from last sequence.

    • 'first' - vector from first sequence.

    • 'mean' - average vectors from all sequences.

    • 'word' - average vectors based on tokens.

Returns

result

Return type

np.array

predict_proba(strings: List[str], labels: List[str])[source]

classify list of strings and return probability.

Parameters
  • strings (List[str]) –

  • labels (List[str]) –

Returns

list

Return type

list of float