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 constituency parsing models.

malaya.constituency.transformer(model: str = 'xlnet', **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' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
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', **kwargs)[source]

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

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
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', **kwargs)[source]

Load Transformer emotion model.

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
Returns:result
Return type:Transformer class

malaya.entity

malaya.entity.describe()[source]

Describe Entities supported

malaya.entity.available_transformer()[source]

List available transformer Entity Tagging models.

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

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

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
Returns:result
Return type:Transformer class
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, **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.
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
malaya.normalize.available_transformer()[source]

List available transformer models.

class malaya.normalize.NORMALIZER[source]
normalize(string: str, check_english: bool = True, normalize_entity=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.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, **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.
Returns:

result

Return type:

malaya.model.t5.PARAPHRASE class

malaya.paraphrase.transformer(model='base', **kwargs)[source]

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

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

Model architecture supported. Allowed values:

  • 'tiny' - transformer Tiny parameters.
  • 'small' - transformer Small parameters.
  • 'base' - transformer Base parameters.
  • 'tiny-bert' - BERT-BERT Tiny parameters.
  • 'bert' - BERT-BERT Base parameters.
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:tokenized string with POS related
malaya.pos.transformer(model: str = 'xlnet', **kwargs)[source]

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

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
Returns:result
Return type:malaya.supervised.tag.transformer

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', **kwargs)[source]

Load Transformer emotion model.

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
Returns:result
Return type:Transformer class

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', **kwargs)[source]

Load Transformer sentiment model.

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
Returns:result
Return type:Transformer class

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], mode: str = 'gmean', **kwargs)[source]

Stacking for predictive models.

Parameters:
  • models (List[Callable]) – list of models.
  • strings (List[str]) –
  • mode (str, optional (default='gmean')) –

    Model architecture 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:string
Return type:stemmed string
malaya.stem.sastrawi(string: str)[source]

Stem a string using Sastrawi.

Parameters:string (str) –
Returns:result – stemmed string.
Return type:str
malaya.stem.deep_model(**kwargs)[source]

Load LSTM + Bahdanau Attention stemming model.

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.

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 = 'xlnet', **kwargs)[source]

Load Transformer subjectivity model.

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
Returns:result
Return type:Transformer class

malaya.summarization.abstractive

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

List available T5 models.

malaya.summarization.abstractive.t5(model: str = 'base', compressed: bool = True, **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.
Returns:

result

Return type:

malaya.model.t5.SUMMARIZATION class

malaya.summarization.extractive

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

List available deep skip-thought models.

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. Hopefully we can train on wikipedia 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.summarize.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', **kwargs)[source]

Load Transformer similarity model.

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
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.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', **kwargs)[source]

Load Transformer toxicity model.

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
Returns:result
Return type:malaya.model.bert.SIGMOID_BERT class

malaya.transformer

malaya.transformer.available_transformer()[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' - BERT architecture from google.
    • 'tiny-bert' - BERT architecture from google with smaller parameters.
    • 'albert' - ALBERT architecture from google.
    • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
    • 'xlnet' - XLNET architecture from google.
    • 'alxlnet' - XLNET architecture from google + Malaya.
    • 'electra' - ELECTRA architecture from google.
    • 'small-electra' - ELECTRA architecture from google with smaller 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='base', **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.
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='base', **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.
Returns:result
Return type:malaya.model.tf.TRANSLATION class

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', **kwargs)[source]

Load Transformer zero-shot model.

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

Model architecture supported. Allowed values:

  • 'bert' - BERT architecture from google.
  • 'tiny-bert' - BERT architecture from google with smaller parameters.
  • 'albert' - ALBERT architecture from google.
  • 'tiny-albert' - ALBERT architecture from google with smaller parameters.
  • 'xlnet' - XLNET architecture from google.
  • 'alxlnet' - XLNET architecture from google + Malaya.
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')[source]

Summarize a string.

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.
    • 'perenggan' - summarization for each perenggan. This will automatically split sentences by EOS.
Returns:

result

Return type:

str

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

generate a long text given a isi penting.

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.

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.PARAPHRASE[source]
paraphrase(string: str, beam_search: bool = True, split_fullstop: bool = True)[source]

Paraphrase a string.

Parameters:
  • string (str) –
  • beam_search (bool, (optional=True)) – If True, use beam search decoder, else use greedy decoder.
  • split_fullstop (bool, (default=True)) – if True, will generate paraphrase for each strings splitted by fullstop.
Returns:

result

Return type:

str

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]
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

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]
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]
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]
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]
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]
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]
predict(string: str)[source]

Tag a string.

Parameters:string (str) –
Returns:result
Return type:Tuple
class malaya.model.bert.ZEROSHOT_BERT[source]
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]
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]
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]
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]
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]
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]
predict(string: str)[source]

Tag a string.

Parameters:string (str) –
Returns:result
Return type:Tuple
class malaya.model.xlnet.ZEROSHOT_XLNET[source]
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