R: возможно ли вычислить разрыв слов с помощью quanteda или любого другого пакета R для анализа текста? - PullRequest
0 голосов
/ 03 июня 2018

Мы используем пакетный режим для терминологии / словарного запаса из текстовых корпусов.

В настоящее время мы внедрили R-скрипт, основанный на одной из формул сходства пакетов, описанных в разделе 2.6 следующей статьи: Энн Ирвин и Энн ИрвинКрис Каллисон-Берч (2017).Комплексный анализ билингвальной лексиконной индукции.Компьютерная лингвистика Том 43 |Выпуск 2 |Июнь 2017 с.273-310.https://www.mitpressjournals.org/doi/full/10.1162/COLI_a_00284

Насколько я знаю, Кац был одним из первых ученых, использовавших концепцию разрывности для моделирования языка (см. Justeson, JS and Katz, SM (1995). Техническая терминология: некоторые лингвистические свойстваи алгоритм идентификации в тексте. Natural Language Engineering, 1: 9–27; Katz S. (1996). Распределение содержательных слов и фраз в текстовом и языковом моделировании. Natural Language Engineering, 2 (1): 15–60.)

Мы хотели бы использовать готовые реализации пакетного анализа для сравнения и оценки нашего сценария.

Я хотел бы знать, существуют ли R-пакеты или R-функции, которые идентифицируют пакетные слова в текстовых корпусах.Я был бы особенно заинтересован в любых решениях, основанных или использующих Quanteda, поскольку Quanteda - чрезвычайно универсальный пакет для текстовой статистики.

Единственный пакет R, который я нашел до сих пор, - это пакетный пакет (19 февраля 2015 г.), в котором реализован пакет Кляйнберга.«Алгоритм обнаружения всплесков Кляйнберга» определяет периоды времени, в которые целевое событие нехарактерно часто или «прерывисто». Это не то, что мне нужно, поскольку этот подход основан на временных рядах.

Помощь, предложения, ссылки приветствуются.

Ура, Марина

1 Ответ

0 голосов
/ 03 июня 2018

Я не нашел много публичных упоминаний о всплесках, связанных с анализом текста.Я встречал Моделирование статистических свойств письменного текста .

Если я правильно читаю формулу в разделе 2.6 из предоставленной вами статьи, то это относительная пропорция слов, деленная на процент документов, в которых эти слова появляются.

Я надеялся, что использование функции dfm_tfidf приведет меня туда.Но часть функции scheme_df не имеет опции пропорциональной частоты документа.

Но мы можем использовать части существующих функций Quanteda, чтобы собрать все вместе.

Предположим, что у нас есть документМатрица (dfm) называется "docfm".Тогда шаги будут такими:

  1. , относительная пропорция членов может быть вычислена как dfm_weight(docfm, scheme = "prop")

  2. Получение пропорциональной частоты документа равно docfreq(docfm) / ndocs(docfm).

Теперь некоторые вычисления с матричным делением.Либо apply, либо sweep будет работать.apply вернет матрицу и ее нужно транспонировать, развертка вернет dgeMatrix.В обоих случаях вы можете превратить их обратно в dmf с as.dfm.К сожалению, оба являются плотными матрицами, поэтому вам, возможно, придется принять это во внимание.Все вместе:

Использование apply:

t(apply(X = dfm_weight(docfm, scheme = "prop"), 1, "/",  (docfreq(docfm) / ndoc(docfm))))

Использование sweep:

sweep(dfm_weight(docfm, scheme = "prop"), MARGIN = 2, STATS = docfreq(docfm) / ndoc(docfm), FUN = "/")
...