Kosinüs Benzerliği
Merhaba, bu yazımda doğal dil işlemede doküman benzerliği ölçütü olarak kullanılan kosinüs benzerliğine değinmek istedim.
Doküman benzerliği makinelerin dokümanlar arası bağlamları ayırt edip kelimeleri o bağlamlar içinde kullanması için çok önemli. İki kelime alalım, evren ve evrim. Veri ön işleme yaparken -stemming- bilgisayar bu kelimelerin köklerini alıyor, ve geriye evr- kalıyor, fakat bu kelimelerin bağlamları farklı. Bu noktada kullanıldığı cümlelerden bağlamlarına bakmak ve semantiği iyileştirmek adına doküman benzerliğine bakıyoruz.
Doküman benzerliğine bakılırken farklı metrikler var, ama çoğu spesifik bir kelimenin o dokümanda kaç kez geçtiği -raw count- üzerine kurulu, ve bu çoğu zaman sıkıntı çıkarabiliyor. Hemen bir örnekle bakalım.
Üç tane doküman aldım, biri Novak Djokovic’in [Doküman A], diğeri Rafael Nadal’ın vikipedi sayfası [Doküman B], sonuncusuysa Nadal’ın vikipedi sayfasından bir parça [Doküman C]. B ve C dokümanlarının daha benzer olmasını bekleriz, ama bu durum kelime sayılarına göre benzerliğe baktığımızda böyle değil. Eğer count vectorizer’a koyup baksaydık yanılabilirdik. Kosinüs benzerliği bu noktada doküman uzunluklarına bağlı olmadan benzerliğe bakmamızı sağlıyor. Üç boyutlu uzayda dokümanlardaki kelime sayılarını görselleştirelim.
Vektörler o dokümanda o kelimenin kaç kez geçtiğini temsil ediyor. Doküman C vektörünün uzunluğu daha kısa olmasına rağmen Doküman B vektörüne daha yakın, aralarındaki açının kosinüsü küçüldükçe dokümanların benzerliği artıyor. Aşağıda kosinüs benzerliğinin matematiksel gösterimi var.
Şimdi buna daha kısa metinlerle uygulamalı bakalım. Notebook’u bu yazının sonundaki linkte bulabilirsiniz.
Text A: Trump announced his selection of Indiana governor Mike Pence as his running mate for presidency. Four days later, the two were officially nominated by the Republican Party at the Republican National Convention.
Text B: Trump entered the 2016 presidential race as a Republican and defeated 16 other candidates in the primaries. Trump has made many false or misleading statements during his campaign and presidency.
Text C: Mike Pence is a politician and lawyer serving as the 48th vice president of the United States. He previously was the 50th governor of Indiana from 2013 to 2017 and a member of the United States House of Representatives from 2001 to 2013.
B metninin A metniyle C metnine göre daha çok benzediğini, aynı şekilde C metninin A metniyle B metnine göre daha çok benzediğini söyleyebiliriz. Count vectorizer’a koyarak kelime sayılarına bakalım.
Şimdi kosinüs benzerliklerine bakalım.
Gördüğünüz üzere A ve B metni arasındaki ve A ve C metni arasındaki benzerlik B ve C metni arasındaki benzerlikten daha fazla.
Yumuşak Kosinüs Benzerliği
Yumuşak kosinüs benzerliği, benzer kelimelerin -ya da aynı bağlamdaki kelimelerin- daha yakın olmasını sağlar, fakat bunun için eş anlamlı kelime modellerine ihtiyaç duyar. Mesela “Merhaba” ve “Günaydın” kelimelerinin arasındaki açıyı küçültür. Aşağıda aralarındaki farkı görebilirsiniz. Bunun uygulamasını başka bir yazıda yapacağım.
Bu linkteki notebook’ta açıklamalı uygulamasını bulabilirsiniz. Yaptığım kosinüs benzerliği uygulamasına bu linkten erişebilirsiniz.