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" - это разные токены. Поэтому, чтобы получить то, что вы хотите, вы можете опубликовать обработку биграмм (у вас также есть триграммы), чтобы вы могли объединить те, что слова одинаковы, но только в другом порядке.
Или вы можете написать свой собственный токенизатор, что не так сложно сделать, а достаточно просто, когда после разбиения в каждой биграмме триграммы он выполняет одинаковую проверку, если все слова совпадают, а затем объедините эти случаи. Это не сложно сделать, хотя.