квантеда, сколько масштаб может обрабатывать texttat_simil - PullRequest
0 голосов
/ 13 ноября 2018

Я пользуюсь quanteda последние пару месяцев, и мне действительно нравится использовать этот пакет.У меня есть один вопрос: сколько строк dfm может обработать функция texttat_simil до того, как время создания матрицы подобия станет слишком длинным.

У меня есть корпус поиска, содержащий 15 миллионов документов.Каждый документ представляет собой короткое предложение, содержащее от 5 до 10 слов (документы иногда содержат также 3-4 цифры).Я токенизировал этот корпус поиска, используя биграммы персонажей, и создал из него dfm.

У меня также есть другой корпус, который я называю корпусом совпадений.Он имеет пару сотен документов одинаковой длины, имеет тот же токенизацию, и для него также создан dfm.Цель состоит в том, чтобы найти самый близкий соответствующий документ из корпуса поиска для каждого из документов набора совпадений.

Комбинированный dfm получается путем связывания соответствия dfm с поиском dfm.Количество уникальных токенов для комбинированного dfm составляет около 1580. Затем я запускаю texttat_simil для этого комбинированного dfm, используя метод «косинус», «документы» в качестве поля и выбор, являющийся лишь одним из документов корпуса соответствия на данный момент для тестирования.Однако, когда я запускаю texttat_simil, это занимает более 5 минут.

Является ли этот тип тома слишком большим для такого типа подхода с использованием quanteda?

Cheers, Sof

1 Ответ

0 голосов
/ 13 ноября 2018

В quanteda v1.3.13 мы перепрограммировали функцию для вычисления косинусных сходств, чтобы она была более эффективной для памяти и для хранения. Однако, похоже, что вы все еще пытаетесь получить матрицу расстояний между документами (исключая диагональ), которая будет иметь размер (15000000 ^ 2) / 2 - 150000000 = 1.124998e + 14 ячеек. Если вам удастся заставить его работать, я очень впечатлен вашей машиной!

Однако для вашего целевого набора документов 1850 вы можете сузить его, используя аргумент selection.

Также ищите экспериментальную функцию textstat_proxy() в v1.3.13, которую мы создали для такого рода проблем. Вы можете указать минимальное расстояние, ниже которого расстояние не будет записано, и оно возвращает матрицу расстояний, используя объект разреженной матрицы. Это все еще экспериментально, потому что разреженные значения не являются нулями, но будут рассматриваться как нули при любых операциях с разреженной матрицей. (Это нарушает некоторые свойства расстояния - см. Обсуждение здесь .)

...