Позвольте мне объяснить, что я хочу сделать.У меня есть сводные данные (15 млн. Слов) о политической дискуссии, и я хочу найти совпадение двух терминов, скажем, в 10 тыс. Слов.
Я создаю два вектора позиций двух терминов: "false "и" law ".
false.v <- c(133844, 133880, 145106, 150995, 152516, 152557, 153697, 155507)
law.v <- c(48064, 155644, 251315, 297303, 323417, 349576, 368052, 543487)
Затем я хочу собрать их в матрицу, чтобы увидеть совпадение, используя функцию" external ".Позиции взяты из одного и того же корпуса, поэтому я создаю матрицу различий:
distances <- outer(false.v, law.v, "-")
Чтобы упростить чтение, назовите их:
rownames(distances) <- paste0("False", false.v)
colnames(distances) <- paste0("Law", law.v)
Хорошо, таку нас есть готовая матрица.Чтобы выяснить, какие пары позиций находились в пределах 10000 слов друг от друга, я просто набрал:
abs(distances) <= 10000
Поэтому я должен определить те моменты в политических дебатах, где эти случаи встречаются чаще.Здесь возникает проблема.Я должен сделать это более чем с парой слов (фактически с 5 парами слов или около того), поэтому было бы здорово, если бы я мог просто искать несколько слов вместо двух пар слов одновременно.Таким образом, вместо поиска «ложь» и «закон», ищите «ложь ИЛИ ложь ИЛИ что угодно» и «закон ИЛИ деньги ИЛИ все что угодно».Я полагаю, я должен использовать RegEx для этой задачи, не так ли?Я просто попробовал все, и ничего не получилось.
Пример, который я только что привел, является упрощением.Команда, которую я использую для поиска слов, создает вектор из корпуса:
positions.law.v <- which(C1.corpus.v == "law")
Так было бы здорово, если бы я мог просто использовать что-то вроде
which(C1.corpus.v == "law OR money OR prison OR ...")
which(C1.corpus.v == "false OR lie OR country OR ...")
Это все равно что сказать R«Эй, дайте мне позиции совместного вхождения любой возможной комбинации между первым рядом слов (закон или деньги или тюрьма ...) и вторым (ложь или ложь или страна ...). Я надеюсь, что яобъясняя это ясно. Извините за языковые ошибки. Спасибо !!