선형 문제는 아닙니다. 다른 어려움 중에서도 일부 문자 시퀀스는 하나 이상의 합리적인 단어 열로 분리 될 수 있습니다.
그러나이 방법은 재귀 루틴을 사용하면 간단합니다. 어휘집 (합법적 인 단어 사전)을 통해 각 단어를 찾으십시오. 주어진 문장의 시작 부분부터 구성 할 수 있습니다. 그 단어들을 반복합니다. 각각에 대해 나머지 문장을 파싱합니다. 성공하면 올바르게 분리 된 입력 (현재 단어 + 나머지를 파싱)을 반환합니다.
// Parse a character sequence
// return a list of legal word separations
// Assume a word list, lexicon, as a global
sep_string(str sentence)
result = <empty list>
sent_size = length of sentence
for word_size in 1:sent_size
word = sentence[0:word_size-1] // next potential word
if word in lexicon
// Found a legal word; remove it and parse
// the rest of the sequence
sep_rest = sep_string(sentence[word_size:sent_size])
// sep_rest is a list of parsings for
// the rest of the sequence
for each solution in sep_rest
append (word + " " + solution) to result
return result
행운을 빈다. 나는 이것이 주제에서 벗어난 것이라고 생각하지만, 이와 같은 문제를 해결할 수있는 방법론 (패키지가 아닌 *)에 관해 묻는 것이 더 좋을지도 모르며 그 질문은 [Cross Validated] (http : /stats.stackexchange.com/) 또는 (덜 가능성) [소프트웨어 Recs] (http://softwarerecs.stackexchange.com/). – r2evans
충분히 공정하고 방법론을 환영합니다. –
아무 것도 완벽하지 않을 것입니다 ... 예를 들어, 문자열 "ilovetherapists"'을; 그것은 "나는 치료사를 사랑합니다"또는 "나는 강간범을 사랑합니다"라고합니다. –