2016-03-26 4 views
2

"say say make made"というファイルを含む 'check_text.txt'があります。私はそれを形づくって "make make make say"と言うことをしたいと思います。私はstemDocumenttmパッケージに入れようとしましたが、以下のように "make made made say"と言うだけです。過去の緊張した言葉に形づくをする方法はありますか?現実の自然言語処理でそうする必要がありますか?ありがとう!tmパッケージ内のstemDocmentが過去の時制の単語には作用しません

filename = 'check_text.txt' 
con <- file(filename, "rb") 
text_data <- readLines(con,skipNul = TRUE) 
close(con) 
text_VS <- VectorSource(text_data) 
text_corpus <- VCorpus(text_VS) 
text_corpus <- tm_map(text_corpus, stemDocument, language = "english") 
as.data.frame(text_corpus)$text 

EDIT:私はまた、英語の不規則動詞のデータセットがパッケージ内に存在する場合、このタスクは簡単だろうSnowballCパッケージに

> library(SnowballC) 
> wordStem(c("said", "say", "says", "make", "made")) 
[1] "said" "sai" "sai" "make" "made" 

答えて

3

wordStemを試してみました。私はそのようなデータを持つパッケージを知りませんので、私は自分のデータベースを作成することを選びました。このウェブサイトにすべての不規則な言葉が含まれているかどうかはわかりません。必要に応じて、より良いWebサイトを検索して独自のデータベースを作成する必要があります。データベースを取得したら、自分の仕事に従事することができます。

まず、stemDocument()を使用し、現在のフォームを-sでクリーンアップしました。その後、過去の形態を(すなわち、past)、過去形の不定形(すなわちinf1)を収集し、tempに過去の形の順序を特定しました。私はさらに、過去の書式の位置をtempに特定しました。私は最終的には座った形をその不定形に置き換えました。過去の分詞についても同じ手順を繰り返しました。

library(tm) 
library(rvest) 
library(dplyr) 
library(splitstackshape) 


### Create a database 
x <- read_html("http://www.englishpage.com/irregularverbs/irregularverbs.html") 

x %>% 
html_table(header = TRUE) %>% 
bind_rows %>% 
rename(Past = `Simple Past`, PP = `Past Participle`) %>% 
filter(!Infinitive %in% LETTERS) %>% 
cSplit(splitCols = c("Past", "PP"), 
     sep = "/", direction = "long") %>% 
filter(complete.cases(.)) %>% 
mutate_each(funs(gsub(pattern = "\\s\\(.*\\)$|\\s\\[\\?\\]", 
         replacement = "", 
         x = .))) -> mydic 

### Work on the task 

words <- c("said", "drawn", "say", "says", "make", "made", "done") 

### says to say 
temp <- stemDocument(words) 

### past forms become present form 
### Collect past forms 
past <- mydic$Past[which(mydic$Past %in% temp)] 

### Collect infinitive forms of past forms 
inf1 <- mydic$Infinitive[which(mydic$Past %in% temp)] 

### Identify the order of past forms in temp 
ind <- match(temp, past) 
ind <- ind[is.na(ind) == FALSE] 

### Where are the past forms in temp? 
position <- which(temp %in% past) 

temp[position] <- inf1[ind] 

### Check 
temp 
#[1] "say" "drawn" "say" "say" "make" "make" "done" 


### PP forms to infinitive forms (same as past forms) 

pp <- mydic$PP[which(mydic$PP %in% temp)] 
inf2 <- mydic$Infinitive[which(mydic$PP %in% temp)] 
ind <- match(temp, pp) 
ind <- ind[is.na(ind) == FALSE] 
position <- which(temp %in% pp) 
temp[position] <- inf2[ind] 

### Check 
temp 
#[1] "say" "draw" "say" "say" "make" "make" "do" 
関連する問題