Почему text2vec показывает больше файлов, чем реально существует? - PullRequest
0 голосов
/ 01 июля 2019

Я тестирую text2vec . В каталоге есть только 2 файла (1.txt, 2.txt, очень маленького размера, около 20 КБ каждый). Я хотел проверить их сходство. Я не знаю, почему там написано 54 документа.

> library(stringr)
>  library(NLP)
>  library(tm)
>  library(text2vec)


>  filedir="F:\\0 R\\similarity test\\corpus"
>  prep_fun = function(x) {
+     x %>% 
+     # make text lower case
+     str_to_lower %>% 
+     # remove non-alphanumeric symbols
+     str_replace_all("[^[:alnum:]]", " ") %>% 
+     # collapse multiple spaces
+     str_replace_all("\\s+", " ")
+  }
>  allfile=idir(filedir)
>  #files=list.files(path=filedir, full.names=T)
>  #allfile=ifiles(files)
>  it=itoken(allfile, preprocessor=prep_fun, progressbar=F)
>  stopwrd=stopwords("en")
>  v=create_vocabulary(it, stopwords=stopwrd)
> v
Number of docs: 54 
174 stopwords: i, me, my, myself, we, our ... 
ngram_min = 1; ngram_max = 1 
Vocabulary: 
          term term_count doc_count
  1:     house          2         2
  2: 224161072          2         2
  3:  suggests          2         2
  4:   remains          2         2
  5: published          2         2
 ---                               
338:      year         14         6
339:       nep         16        12
340:      will         16        10
341:   chinese         20        12
342:     malay         20        10
> 

Я экспортирую данные в csv и нахожу, что новые имена файлов называются:

1.txt_1
1.txt_2
1.txt_3
1.txt_4
...

...

Если бы я использовал

#files=list.files(path=filedir, full.names=T)
#allfile=ifiles(files)

это все еще говорит 54 документа

И между ними также есть меры сходства. Большинство из них имеют 0 сходства.

Пожалуйста, дайте мне знать, если это будет такой случай или что-либо еще.

Мне нужна только одна мера сходства для 1.txt и 2.txt и выводить такую ​​матрицу, которая содержит только меру для этих двух файлов.

1 Ответ

3 голосов
/ 01 июля 2019

text2vec рассматривает каждую строку в каждом файле как отдельный документ.В вашем случае я предлагаю предоставить другую функцию reader для функции idir / ifiles.Читатель должен просто прочитать весь файл и свернуть строки в одну строку.(Например, reader = function (x) paste (readLines (x), collapse = ''))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...