Apa perbedaan antara lemasiasi vs stemming?

131

Kapan saya menggunakan masing-masing?

Juga ... apakah lemmatisasi NLTK tergantung pada Bagian Bicara? Bukankah lebih akurat jika itu?

TIMEX
sumber
2
Ini jauh di atas kepala saya, tetapi mengapa ada tag python?
Jimmy
7
@ Jimmi: tagged python b / c itu berbicara tentang perpustakaan python nltk
ealdent
2
Inilah artikel bagus yang menjawab pertanyaan
Yakub
2
Lihat juga: Stemmers vs Lemmatizers
hippietrail

Jawaban:

130

Singkat dan padat: http://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html

Tujuan dari stemming dan lemmatization adalah untuk mengurangi bentuk infleksi dan terkadang kata-kata yang berhubungan secara derivatif dengan bentuk dasar yang umum.

Namun, kedua kata itu berbeda dalam rasanya. Stemming biasanya mengacu pada proses heuristik kasar yang memotong ujung kata-kata dengan harapan mencapai tujuan ini dengan benar sebagian besar waktu, dan sering termasuk menghilangkan imbuhan derivasional. Lemmatization biasanya mengacu pada melakukan sesuatu dengan benar dengan menggunakan kosa kata dan analisis morfologis kata-kata, biasanya bertujuan untuk menghilangkan ujung inflektif saja dan mengembalikan basis atau bentuk kamus kata, yang dikenal sebagai lemma.

Dari dokumen NLTK:

Lemmatization dan stemming adalah kasus khusus normalisasi. Mereka mengidentifikasi perwakilan kanonik untuk satu set bentuk kata yang terkait.

miku
sumber
ingin tahu apa yang panjang rata-rata lemmatization katakan kepada kita tentang dokumen?
sAguinaga
1
Itu tidak sepenuhnya menjawab pertanyaan. Anda tidak menjelaskan kapan harus menggunakan yang mana. Keduanya dapat berfungsi untuk normalisasi tetapi seringkali yang mana yang Anda pilih merupakan trade-off antara presisi dan kecepatan.
dzieciou
1
@dzieciou, terima kasih atas masukannya - Anda mungkin dapat mengedit jawabannya; dan saya akan mencoba menambahkan lebih banyak konteks juga.
miku
79

Lemmatisasi berkaitan erat dengan stemming . Perbedaannya adalah bahwa stemmer beroperasi pada satu kata tanpa pengetahuan tentang konteksnya, dan karena itu tidak dapat membedakan antara kata-kata yang memiliki arti yang berbeda tergantung pada bagian dari pidato. Namun, stemmer biasanya lebih mudah diimplementasikan dan dijalankan lebih cepat, dan akurasi yang berkurang mungkin tidak masalah untuk beberapa aplikasi.

Misalnya:

  1. Kata "lebih baik" memiliki "baik" sebagai lemma-nya. Tautan ini tidak terjawab oleh stemming, karena memerlukan pencarian kamus.

  2. Kata "berjalan" adalah bentuk dasar untuk kata "berjalan", dan karenanya ini cocok dalam stemming dan lemmatisasi.

  3. Kata "meeting" dapat berupa bentuk dasar dari kata benda atau bentuk kata kerja ("to meet") tergantung pada konteksnya, misalnya, "dalam pertemuan terakhir kami" atau "Kami akan bertemu lagi besok". Tidak seperti stemming, lemmatisasi pada prinsipnya dapat memilih lemma yang tepat tergantung pada konteksnya.

Sumber : https://en.wikipedia.org/wiki/Lemmatisation

Mukesh Chapagain
sumber
24

Ada dua aspek untuk menunjukkan perbedaan mereka:

  1. Sebuah stemmer akan mengembalikan batang kata, yang tidak harus identik dengan akar morfologis kata tersebut. Biasanya cukup bahwa kata-kata terkait memetakan ke batang yang sama, bahkan jika batang itu sendiri tidak menjadi root yang valid, sedangkan dalam lemmatisasi , itu akan mengembalikan bentuk kamus dari kata, yang harus menjadi kata yang valid.

  2. Dalam lemmatisasi , bagian ujaran kata harus ditentukan terlebih dahulu dan aturan normalisasi akan berbeda untuk bagian ujaran yang berbeda, sedangkan stemmer beroperasi pada satu kata tanpa pengetahuan konteks, dan oleh karena itu tidak dapat membedakan antara kata yang memiliki perbedaan. artinya tergantung pada bagian dari pidato.

Referensi http://textminingonline.com/dive-into-nltk-part-iv-stemming-and-lemmatization

Liang Zhang
sumber
18

Tujuan dari stemming dan lemmatization adalah untuk mengurangi variasi morfologis. Ini berbeda dengan prosedur "istilah konflasi" yang lebih umum, yang juga dapat membahas variasi leksico-semantik, sintaksis, atau ortografis.

Perbedaan nyata antara stemming dan lemmatization ada tiga:

  1. Stemming mereduksi bentuk-kata menjadi batang (semu), sedangkan lemasiisasi mereduksi bentuk-kata menjadi lemma yang secara linguistik valid. Perbedaan ini jelas dalam bahasa dengan morfologi yang lebih kompleks, tetapi mungkin tidak relevan untuk banyak aplikasi IR;

  2. Lemmatization hanya berurusan dengan varians infleksional, sedangkan stemming mungkin juga berurusan dengan varians derivasional;

  3. Dalam hal implementasi, lemasiasi biasanya lebih canggih (terutama untuk bahasa yang secara morfologis kompleks) dan biasanya memerlukan semacam lexica. Di lain pihak, pemuasan yang memuaskan dapat dicapai dengan pendekatan berbasis aturan yang agak sederhana.

Lemmatization juga dapat didukung oleh tagger bagian-of-speech untuk menyangkal homonim.

Jan Snajder
sumber
13

Seperti yang MYYN tunjukkan, membendung adalah proses menghilangkan afiks infleksiional dan terkadang derivasional ke bentuk dasar yang mungkin terkait dengan semua kata aslinya. Lemmatization berkaitan dengan memperoleh satu kata yang memungkinkan Anda untuk mengelompokkan sekelompok formulir infleksi. Ini lebih sulit daripada membendung karena memerlukan konteks untuk memperhitungkan (dan dengan demikian makna kata), sementara membendung mengabaikan konteks.

Adapun ketika Anda akan menggunakan satu atau yang lain, itu masalah seberapa banyak aplikasi Anda tergantung pada mendapatkan arti kata dalam konteks yang benar. Jika Anda melakukan terjemahan mesin, Anda mungkin ingin lemmatisasi agar tidak salah menerjemahkan kata. Jika Anda melakukan pencarian informasi lebih dari satu miliar dokumen dengan 99% dari pertanyaan Anda mulai dari 1-3 kata, Anda bisa puas dengan stemming.

Sedangkan untuk NLTK, WordNetLemmatizer tidak menggunakan bagian dari pidato, meskipun Anda harus menyediakannya (jika tidak default ke kata benda). Melewati "merpati" dan "v" menghasilkan "menyelam" sementara "merpati" dan "n" menghasilkan "merpati".

ealdent
sumber
12

Penjelasan berdasarkan contoh tentang perbedaan antara lemmatization dan stemming:

Lemmatization menangani pencocokan "mobil" ke "mobil" bersama dengan pencocokan "mobil" ke "mobil".

Stemming menangani pencocokan "mobil" ke "mobil" .

Lemmatization menyiratkan lingkup pencocokan kata fuzzy yang lebih luas yang masih ditangani oleh subsistem yang sama. Ini menyiratkan teknik tertentu untuk pemrosesan tingkat rendah di dalam mesin, dan mungkin juga mencerminkan preferensi teknik untuk terminologi.

[...] Mengambil CEPAT sebagai contoh, mesin lemmatization mereka menangani tidak hanya variasi kata dasar seperti tunggal vs jamak, tetapi juga operator tesaurus seperti memiliki "panas" cocok dengan "hangat".

Ini bukan untuk mengatakan bahwa mesin lain tidak menangani sinonim, tentu saja mereka lakukan, tetapi implementasi tingkat rendah mungkin dalam subsistem yang berbeda dari yang menangani stemming dasar.

http://www.ideaeng.com/stemming-lemmatization-0601

majom
sumber
3

ianacl
tetapi saya pikir Stemming adalah peretasan kasar yang digunakan orang untuk mendapatkan semua bentuk kata yang berbeda hingga ke bentuk dasar yang tidak perlu menjadi kata yang sah sendiri.
Sesuatu seperti Porter Stemmer dapat menggunakan regex sederhana untuk menghilangkan akhiran kata umum

Lemmatization membawa kata ke bentuk dasar yang sebenarnya, dalam kasus kata kerja tidak beraturan, mungkin tidak terlihat seperti kata input
Sesuatu seperti Morpha yang menggunakan FST untuk membawa kata benda dan kata kerja ke bentuk dasar mereka

Aditya Mukherji
sumber
Saya pikir Porter Stemmer diimplementasikan tanpa bantuan Reguler Expressions, karena banyak bahasa yang lebih tua tidak memilikinya, tetapi sebaliknya Anda punya ide yang tepat.
Ken Bloom
3

Stemming hanya menghilangkan atau menghilangkan beberapa karakter terakhir dari sebuah kata, sering kali mengarah pada makna dan ejaan yang salah. Lemmatization mempertimbangkan konteks dan mengubah kata menjadi bentuk dasarnya yang bermakna, yang disebut Lemma. Terkadang, kata yang sama dapat memiliki beberapa Lemma berbeda. Kita harus mengidentifikasi tag Part of Speech (POS) untuk kata dalam konteks spesifik itu. Berikut adalah contoh untuk menggambarkan semua perbedaan dan kasus penggunaan:

  1. Jika Anda lemmatize kata ' Peduli ', itu akan mengembalikan ' Peduli '. Jika Anda membendung, itu akan mengembalikan ' Mobil ' dan ini salah.
  2. Jika Anda lemmatize kata ' Stripes ' dalam konteks kata kerja , itu akan mengembalikan ' Strip '. Jika Anda lemmatize dalam konteks kata benda , itu akan mengembalikan ' Stripe '. Jika Anda hanya membendungnya, itu hanya akan mengembalikan ' Strip '.
  3. Anda akan mendapatkan hasil yang sama apakah Anda lemmatize atau kata-kata batang seperti berjalan, berlari, berenang ... berjalan, berlari, berenang dll.
  4. Lemmatization mahal secara komputasi karena melibatkan tabel pencarian dan apa yang tidak. Jika Anda memiliki dataset besar dan kinerja bermasalah, ikuti Stemming. Ingat Anda juga dapat menambahkan aturan Anda sendiri ke Stemming. Jika akurasi adalah yang terpenting dan dataset tidak terlalu besar, gunakan Lemmatization.
Sumit Pokhrel
sumber
2

Stemming adalah proses menghilangkan beberapa karakter terakhir dari kata yang diberikan, untuk mendapatkan bentuk yang lebih pendek, bahkan jika bentuk itu tidak memiliki arti.

Contoh,

"beautiful" -> "beauti"
"corpora" -> "corpora"

Lebih banyak contoh tentang stemming

Stemming dapat dilakukan dengan sangat cepat.

Lemmatization di sisi lain, adalah proses mengubah kata yang diberikan ke bentuk dasar itu sesuai dengan arti kamus kata.

Contoh,

"beautiful" -> "beauty"
"corpora" -> "corpus"

Lebih banyak contoh lemmatization

Lemmatization membutuhkan lebih banyak waktu daripada membendung.

siva pokala
sumber