2017-11-20 1 views
0

내 자신의 토크 나이저를 사용하여 텍스트를 벡터로 변환 할 수있는 방법이 있습니까? 코드 위
vectorizer = TfidfVectorizer(tokenizer=getTokens) X = vectorizer.fit_transform(corpus)
는 파이썬과 getTokens로 작성하는 내 사용자 지정 토크 나이입니다 나는 또한 R library(text2vec)의 도서관이 같은 언급 할 몇 가지가 있습니다 R. 에서 같은 일을 할 수 있도록 어쨌든이 있지만, 나는 얻지 못한다 R 사용자 정의 Tokenizer를 R에 적용하는 방법 토큰 = 단어텍스트를 벡터로 변환하는 R에서 사용자 정의 토크 나이저 사용?

답변

1

"토큰 화는 텍스트를 토큰으로 분할하는 과정입니다." 토큰을 사용하면 단어를 참조한다고 가정합니다. 이것은 예를 들어 R을 사용하여 수행 될 수있다. 낮은 수준의 strsplit. 예를 들면 다음과 같습니다.

> example <- "This is an example. This is an example" 
> unlist(strsplit(example, split = " ")) 
[1] "This"  "is"  "an"  "example." "This"  "is"  "an"  "example" 

문자열에서 볼 수 있듯이 문자열은 여러 문자열이있는 벡터로 자동 변환됩니다. 이제는 간단한 공간으로 나누는 것이 특수한 경우를 잘 처리하지 못합니다. 그래서 하나 이상의 영숫자가 아닌 문자를 정규식을 사용하여 더 나은 고려되어야한다 : 당신은 문장 부호를 유지하려는 경우 alnum 대신 공백 일명 "\\s+"을 사용할 수 있습니다

> unlist(strsplit(example, split = "[^[:alnum:]]+")) 
[1] "This" "is"  "an"  "example" "This" "is"  "an"  "example" 

.

> tokenize <- function(x){ 
+ unlist(strsplit(example, split = "\\s+")) 
+ } 
> tokenize(example) 
[1] "This"  "is"  "an"  "example." "This"  "is"  "an"  "example" 

토큰을 단어 (예 : 문장 또는 문자)와 다른 것으로 설정하려면 다음과 같이하십시오. 당신은 특별한 경우를 처리 할 수있는 quanteda의 tokenizer를 사용할 수 있습니다. 이 기간은 새로운 문장을 나타내지 않습니다.

> example <- "This is an example. This is an example Dr. Knowitall" 
> quanteda::tokens(example, what = "sentence") 
tokens from 1 document. 
text1 : 
[1] "This is an example."    "This is an example Dr. Knowitall" 

고유 토큰 화가와 함께 제공되는 다른 패키지가 몇 가지 있습니다. 예를 들어 패키지 토큰 화 도구는이를 제공합니다.

+0

기본적으로 UR1 탐지에서이 항목을 사용하여 벡터 양식의 Url을 작성하고 점수를 예측해야합니다. 그렇지 않으면 R.It에서 동일한 기능을 생성 할 수 있습니까? 큰 도움이됩니다. @ jonGrub –

+0

질문에 다음을 추가하고 토큰화할 몇 가지 URL의 예를 제공하십시오. 보시다시피, 주로 분할 옵션에 무엇을 쓰는지에 따라 다릅니다. 예를 들어 URL을 쉼표로 구분하면이를 함수에 넣을 수 있습니다. – JonGrub

+0

github 링크 (https : //github.com/keshavm021/Using-Machine-Learning-in-R-Detecting-Malicious-Urls/blob/master/keshav.R)를 통해 가면 무슨 일이 일어나고 있는지 이해하게 될 것입니다. 큰 도움이 되십시오. @ jongrub –

관련 문제