Подтвердить что ты не робот

Что означает выход алгоритма кластеризации Брауна?

Я запустил алгоритм коричневой кластеризации из https://github.com/percyliang/brown-cluster, а также реализацию python https://github.com/mheilman/tan-clustering. И оба они дают какое-то двоичное и другое целое для каждого уникального токена. Например:

0        the        6
10        chased        3
110        dog        2
1110        mouse        2
1111        cat        2

Что означает бинарное и целое число?

Из первой ссылки двоичный файл известен как bit-string, см. http://saffron.deri.ie/acl_acl/document/ACL_ANTHOLOGY_ACL_P11-1053/

Но как я могу сказать из вывода, что dog and mouse and cat - это один кластер, а the and chased находится не в одном кластере?

4b9b3361

Ответ 1

Если я правильно понимаю, алгоритм дает вам дерево, и вам нужно усечь его на некотором уровне, чтобы получить кластеры. В случае этих бит строк вы должны просто взять первые L символы.

Например, резка на втором символе дает вам два кластера

10           chased     

11           dog        
11           mouse      
11           cat        

На третьем символе вы получите

110           dog        

111           mouse      
111           cat        

Стратегия резания - это другой предмет.

Ответ 2

В реализации Перси Лянга (https://github.com/percyliang/brown-cluster) параметр -C позволяет указать количество кластеров слов. Вывод содержит все слова в корпусе вместе с битовой строкой, аннотирующей кластер и частоту слов в следующем формате: <bit string> <word> <word frequency>. Количество отдельных строк бит в выводе равно числу желаемых кластеров, а слова с одной и той же битовой строкой принадлежат одному и тому же кластеру.

Ответ 3

Измените работу:./wcluster --text input.txt - c 3

- c число

это число означает количество кластеров, а по умолчанию - 50. Вы не можете различать разные кластеры слов, потому что вход по умолчанию имеет только три предложения. Измените 50 кластеров на 3 кластера, и вы можете сказать разницу.

Я ввожу три твита во вход и даю 3 в качестве параметра кластера

введите описание изображения здесь

Ответ 4

Целые числа - это количество раз, сколько раз это слово отображается в документе. (Я тестировал это в реализации python.)

Из комментариев в верхней части реализации python:

Вместо использования окна (например, как в Brown et al., sec.4), это вычисляемый кодом PMI с использованием вероятности того, что два случайно выбранных кластеры из того же документа будут c1 и c2. Кроме того, поскольку общее количество кластерных токенов и пар постоянно по парам, этот код используется вместо вероятностей.

Из кода в реализации python мы видим, что он выводит слово, строку бита и количество слов.

def save_clusters(self, output_path):
    with open(output_path, 'w') as f:
        for w in self.words:
            f.write("{}\t{}\t{}\n".format(w, self.get_bitstring(w),
                                          self.word_counts[w]))

Ответ 5

Мое предположение:

В соответствии с рисунком 2 в Brown et al 1992 кластеризация иерархична и чтобы получить от корня до каждого слова "лист", которое у вас есть чтобы принять решение вверх/вниз. Если up равно 0, а down равно 1, вы можете представлять каждое слово в виде битовой строки.

Из https://github.com/mheilman/tan-clustering/blob/master/class_lm_cluster.py:

# the 0/1 bit to add when walking up the hierarchy
# from a word to the top-level cluster