Ошибка извлечения ключевых слов на основе графа при создании сети ключевых слов - PullRequest
0 голосов
/ 22 марта 2019

для моего основного исследования мне нужно найти ключевые слова для записей пользователей с платформы разработки продукта, и я использую метод на основе графа-pagerank. Я наткнулся на коды, которые генерируют начальный график сети ключевых слов, а затем после запуска кода PageRank я могу получить ключевые слова. Однако проблема в том, что когда я заменяю текст примера на проверенный текст, он больше не работает, код ниже показывает этап до создания начального графика ключевых слов. (pagerank) не входит. результаты должны выглядеть следующим образом ** сеть ключевых слов

Я получил ошибку:

Ошибка: неожиданная строковая константа в: tagged_words <- SplitText (as.character (tagged_text)) tagged_words <- с (SelectTaggedWords (tagged_words, "/ НН"), SelectTaggedWords (tagged_words "" tagged_words <- RemoveTags (tagged_words) # удалить неиспользуемый тег POS Ошибка в as.character (x): невозможно привести тип «замыкание» к вектору type 'character' Вызывается из: sub ("/ [A-Z] {2,3}", "", Words) Просмотр <a href="https://i.stack.imgur.com/9Gbvw.jpg" rel="nofollow noreferrer"> 1 > selected_words <- уникальный (tagged_words) <br> Ошибка при переносе: unique () применяется только к векторам. Ошибка в класс (igraph)% in% "igraph": объект 'textIgraph' не найден

проверенный текст:

Бескомпромиссная двухместная, уличная и легковая машина Bodylines напоминает великих гонщиков из 60-х годов. смесь современных линии, которые изящно текут и ДНК борцов ралли, с ароматом это имеет очень жесткое шасси трубки, покрытое сексуальным шт кузов он использует обычные светодиодные фонари и другие детали OEM. The Local Motors, Race Fighter: бескомпромиссная двухместная улица и трасса дневного авто, его скульптурные линии кузова напоминает великих гонщиков из 60-х годов. смесь современных линий, которые изящно текут и Ралли бойцов ДНК, с собственным ароматом. Она очень жесткая Шасси трубки покрыто сексуальным цельным кузовом. оно использует обычные светодиодные фонари и другие запчасти. Amigo, хороший легкий автомобиль братан, как подвеска толкателя, поздравления салудо !! отлично вид спереди и цветовая схема. Вот раздетая версия без ветровое стекло вам нужно нажать на кнопку файлов ниже Вот лишенный версии без ветрового стекла The Local Motors, Race Fighter: Is бескомпромиссная двухместная, уличная и легковая машина Bodylines напоминает великих гонщиков из 60-х годов. смесь современных линии, которые изящно текут и ДНК борцов ралли, с ароматом это имеет очень жесткое шасси трубки, покрытое сексуальным шт кузов он использует обычные светодиодные фонари и другие детали OEM. Удивительный приятель, просто поражает только то, что ты бы любил чтобы увидеть более преувеличенные советы выхлопных газов, а также удивительные portafolio, что программу вы используете для моделирования? надеюсь, ты сможешь пройти мимо и дать мне немного Отзыв о моей машине Классный автомобиль, приятель, я люблю крошечные крылья сверху, также ветровое стекло и шаркеш выглядят довольно хорошо, это выглядит как американская версия автомобиля под названием моно, они выглядели бы потрясающе участвуя в гонке друг с другом с МР-макетом, а другой со всеми классическая раскладка FR, надеюсь, вы можете пройти мимо и дать мне несколько отзывов о моя машина привет матовая хорошая машина я люблю первый взгляд это 3d модель или Надеюсь, вы пройдете мимо, чтобы увидеть мой проект и дать некоторую обратную связь. Отличные эскизы, отчасти напоминающие мне горячие колеса, которые у меня были в детстве, его здорово видеть такие вещи, 4-й набросок заставляет меня задуматься о гонки на луне. Grat агрессивный дизайн, я люблю "приемный совок" -все "довольно крутая хорошая машина, мне больше нравится версия Вейдера, почему гравитация отстой? она держит вещи на полу !! и что более важно чем это закон! Спасибо Мэтт, рад слышать, что есть отличный день. Спасибо приятель льстит слышать это, особенно приходя от великого дизайнера очень хороший рендер мне нравится подвеска толкателя, Явсе еще жду, когда ты немо пройдешь и покормишь моя машина, хорошего дня. Ух классные зарисовки мне нравятся роботизированные стайлинг 5/5 приятель отличная работа Спасибо плюкс хороший кузовной и интересный Распределение мне очень нравится задний конец Очень интересный подход, я получить представление о парнях, пытающихся обогнуть Нюрбургринг как можно быстрее на их 911 и сумасшедший чувак на этой стрельбе истребителя пейнтболы им jajajaja, отличное мышление нестандартно, надеюсь, вы можете пройти мимо и высказать свое мнение о моей записи. Кстати, я на самом деле вещь Ваш процесс проектирования бесстрашный, и я думаю, вот что держит автомобильный дизайн движется вперед. хорошая техника зарисовки, выглядит как гонщик из трона, надеюсь, вы сможете пройти мимо и оставить мне свое мнение На моей записи, удачи, брат, спасибо, братан. Большие зарисовки !! а также пропорции, как 4-й вид сбоку много Привет Сал, это похоже на машина ручной работы, я вижу, вы сделали другие проекты, для меня это самое лучшее, мне это очень нравится, хотя я дам вам совет исследуя разные стили, как я вижу, все ваши записи имеют похожие стиль, вы можете попробовать другие языки дизайна, конечно, поддерживая это это ваш личный стиль и привносит часть этого во все ваши проекты, но также принимая другие вдохновения и элементы. еще несколько просмотров это фактическая конфигурация, я хотел бы мой jajaja Эй отлично смотрится в режиме гонки, на залив цвета! этот рендер сделал меня дать еще один взгляд, некоторые интересные элементы, такие как фронт, открытые толкатель и подвеска, надеюсь, вы пройдете мимо, чтобы дать мне Отзыв о моей работе Nice Job, простой, но современный, какие САПР вы используете моделировать и визуализировать? надеюсь, что вы можете пройти мимо, чтобы дать мне отзыв о моем вход, ура брах !! Последняя попытка загрузить изображение Gracias chavito Си-Верда-эс-Кью-Коменц Эль Моделло трабахандоло Комо Изобретатель, потому что, конечно, я люблю тебя, я тебя люблю. tarde del proyecto (фальтандо 18 дней) Национальный офис по делам женщин, Национальный музей шасси lo estoy retrabajando para que sea un tubular mas sencillo ru Эль Костадо, Салудос. хорошая круглая машина, люблю ремни и передний конец но не так уверен насчет заднего конца новые рендеры чачан, вот Я сделал некоторые из исправлений, на которые вы, приятели, указали, по-видимому проблема заключалась в том, что, когда я сделал брак между кузовом и шасси мне пришлось порезать кузовные работы и использовать и автоматические ямочные работы инструмент для пригонки кузова, который из-за давления отделки со временем создал любопытную поверхность вокруг Пилар, я также сделал немного филе на боковых поверхностях, думаю машина выглядит лучше. Спасибо: @charlyron, @chavito, @Seizmicdesign:)

Я просто могу сказать вам 5/5, хотя не люблю задние фонари фиесты в противном случае отличная работа отличные зарисовки братан, так жаль, что вы не закончили Надеюсь, что вы можете пройти мимо и дать мне мнение о моем дизайне. много из интересного материала, я люблю вид сзади на 3-й странице, а также опция b на профилях последней страницы, у вас есть настоящий талант Надеюсь, вы пройдете мимо, чтобы дать мне отзыв о моем дизайне, веселит. Большое спасибо за ваш комментарий, также здорово получить обратную связь с женской точки зрения.

Спасибо большое, приятель, поможет ли это, если я скажу тебе, что в высоком октане топливо, трубы плевать огонь ?? яжа шучу, спасибо за Обратная связь. спасибо jessydude рад, что вам понравилось спасибо друг, я пытался чтобы это выглядело Майами вице-джаджа О, я забыл надеть объяснение, что я использую полное ветровое стекло, потому что я думаю, что проще снять полный дизайн тела, который одевается в полоску :) просто в на случай, если вам интересно, почему я не изменил все взгляды полосатая версия. Q3 выглядит лучше, на мой взгляд, я согласен с Mahbuick попытаться получить верхнюю линию огней, чтобы соответствовать линии гриль ты элимиОтступите к этому пробелу, круто в целом отличная графика. Огромное количество классных рендеров, а также версии R.мой выбор будет серебристый с красной рамкой и 6 спицами.

Вот тот же кузов, но с упрощенной (более реалистичной) версией шасси (рамы) Chavito, спасибо за совет, вы мне помогличтобы увидеть детали, которые я проехал, я исправил некоторые из них для некоторых окончательных рендеров, и еще раз ваша запись является удивительной. Gracias hermano.

Вот она с шасси и филе для топора, для гладких поверхностей и других небольших исправлений

Чувак, потрясающий дизайн: D ты отличный дизайнер, продолжай двигаться вперед, я уверен, что когда-нибудь я увижу хорошую машину и скажу, что узнаю этот стиль !!!О, да, мальчик Хантиг !!!и поищите его в Google, чтобы подтвердить мои подозрения.

library(NLP)
library(tm)
library(openNLP)
library(graph)
library(BiocGenerics)
library(parallel)
# --- FUNCTIONS
tagPOS <-  function(x, ...) {
  s <- as.String(x)
  word_token_annotator <- Maxent_Word_Token_Annotator()
  a2 <- Annotation(1L, "sentence", 1L, nchar(s))
  a2 <- annotate(s, word_token_annotator, a2)
  a3 <- annotate(s, Maxent_POS_Tag_Annotator(), a2)
  a3w <- a3[a3$type == "word"]
  POStags <- unlist(lapply(a3w$features, `[[`, "POS"))
  POStagged <- paste(sprintf("%s/%s", s[a3w], POStags), collapse = " ")
  list(POStagged = POStagged, POStags = POStags)
}

SplitText <- function(Phrase) { 
  unlist(strsplit(Phrase," "))
}
trim <- function (x) gsub("^\\s+|\\s+$", "", x)

IsPunctuated <- function(Phrase) {
  length(grep("\\.|,|!|\\?|;|:|\\)|]|}\\Z",Phrase,perl=TRUE))>0 # punctuation: . , ! ? ; : ) ] }
}

SelectTaggedWords <- function(Words,tagID) {
  Words[ grep(tagID,Words) ]
}
RemoveTags <- function(Words) {
  sub("/[A-Z]{2,3}","",Words)
}

IsSelectedWord <- function(Word) {
  ifelse(length(which(selected_words == Word))>0, TRUE, FALSE)
}

GetWordLinks <- function(position,scope) {
  scope <- ifelse(position+scope>length(words),length(words),position+scope)
  links <- ""
  for (i in (position+1):scope) {
    if ( IsSelectedWord(words[i]) ) links <- c(links,words[i])
  }

  if (length(links)>1) {
    links[2:length(links)]
  }
  else {
    links <- ""
  }
}

ConstructTextGraph <- function(n) { 
  word_graph <- new("graphNEL")
  i <- 1
  while (i < length(words) ) {
    if ( IsSelectedWord(words[i]) ) {                                   
      links <- GetWordLinks(i,n)                                
      if (links[1] != "") {                                     
        cat(i," ",words[i]," - ",paste(c(links),collapse=" "),"\n")
        if ( length(which(nodes(word_graph)==words[i]))==0  ) {     
          word_graph <- addNode(words[i],word_graph)
        }
        for (j in 1:length(links)) {
          if ( length(which(nodes(word_graph)==links[j]))==0 ) {
            word_graph <- addNode(links[j],word_graph)
            word_graph <- addEdge(words[i],links[j],word_graph,1)
          } 
          else {
            if ( length(which(edges(word_graph,links[j])[[1]]==words[i]))>0 ) { 
              prev_edge_weight <- as.numeric(edgeData(word_graph,words[i],links[j],"weight"))
              edgeData(word_graph,words[i],links[j],"weight") <- prev_edge_weight+1
            }
            else {
              word_graph <- addEdge(words[i],links[j],word_graph,1)
            }
          } 
        }
      }
    }
    i <- i+1
  }
  word_graph
}

library(tm)
library(NLP)

doc <- c("tested text")

corp <- Corpus(VectorSource(doc))
corp <- tm_map(corp, stripWhitespace)
corp <- tm_map(corp, tolower)
words_with_punctuation <- SplitText(as.character(corp[[1]]))
corp <- tm_map(corp, removePunctuation)

#--- GRAPH CONSTRUCTION
words <- SplitText(as.character(corp[[1]]))
tagged_text <- tagPOS(corp[[1]])
tagged_words <- SplitText(as.character(tagged_text))
tagged_words <- c(SelectTaggedWords(tagged_words,"/NN"),SelectTaggedWords(tagged_words,"/JJ"))  # keep only NN & JJ tagged words 
tagged_words <- RemoveTags(tagged_words)                                                        # remove un-used tag POS
selected_words <- unique(tagged_words)                                                          
text_graph <- ConstructTextGraph(2)  
#Interactive Igraph plot
library(visNetwork)
library(igraph)
textIgraph<-igraph.from.graphNEL(text_graph, name = TRUE, weight = TRUE,unlist.attrs = TRUE)
textIgraph<-simplify(textIgraph,remove.loops=TRUE)

visIgraph(textIgraph) %>%
  visNodes(size = 35, shape = "circle",font=list(size=28)) %>%
  visOptions(highlightNearest = TRUE, 
             nodesIdSelection = TRUE) %>%
  visInteraction(keyboard = TRUE)
...