NGramTokenizer: переключаемые термины считаются равными

Я пытаюсь построить биграммы из образца бесплатных комментариев о встречах, проведенных в прошлом месяце. Я использую следующий метод (из Rweka упаковка):

BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 3))
dtm <- TermDocumentMatrix(modif.corpus.irri.aff(MyComments), 
                          control = list(tokenize = BigramTokenizer)

где modif.corpus.irri.aff() моя "функция формата To-Corpus" (кстати, используя основополагающий документ).

Для отображения гистограммы конец кода выглядит так:

dm <- as.matrix(t(dtm))
v <- apply(dm,2,sum)
v <- sort(v, decreasing = TRUE)
v_top <- sort(v[1:nb.terms])
barplot(v_top, horiz=TRUE, cex.names = 0.5, 
        las = 1, col=grey.colors(10), main="title", 
        names.arg = names(v_top))

Это работает довольно хорошо, но я хочу отобразить "парные вхождения", а не "биграмные вхождения", потому что я хочу считать идеи, выраженные больше, чем биграммы.

Просто пример, чтобы быть уверенным: я хочу объединить / объединить планку "Long meeting_" с "Meeting_ long", потому что идея та же: встречи были слишком длинными. Есть ли управляющий параметр, имеющий дело с этим дифференцированием в NgramTokenizer? Или что-то добавить?

1 ответ

Хорошо, я думаю, что токенизатор сделал это, как и ожидалось: "long meeting_", "meeting_ long" - это разные токены. Поэтому, чтобы получить то, что вы хотите, вы можете опубликовать обработку биграмм (у вас также есть триграммы), чтобы вы могли объединить те, что слова одинаковы, но только в другом порядке.

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

Другие вопросы по тегам