kStringFileTokenizerUnitSentence와 함께 CFStringTokenizer를 사용하여 문자열을 문장으로 분할하려고합니다. 내가 가지고있는 첫 번째 문제는 문장을 문장으로 인식 할 수 있도록 대문자로 표기해야한다는 것입니다. 그렇지 않다면, 그것은 단지 이전 문장의 일부라고 생각합니다.CFStringTokenizer가 소문자로 된 문장을 토큰으로 사용하지 않습니다.
사용자가 입력 한 텍스트가 나뉘어서 텍스트가 매우 부정확 할 것으로 예상됩니다.
CFStringTokenizer를 사용하여 캡슐화되지 않은 문장을 감지 할 수있는 다른 방법이 있습니까? 아니면 다른 방법으로 분할해야합니까? How to get an array of sentences using CFStringTokenizer?
참고 :
나는 내 구현이 SO 질문에 대답 다음에 '!'비트를 테스트 한 후에 더는 그 kCFStringTokenizerUnitSentence으로, 만약 것을 또는 '?' 비 대문자가 뒤 따르면 그 문장을 인식합니다. 또한 구두점 중 하나에 '!'기호 사이에 공백이없는 문장이 오는 경우 첫 번째 단어는 여전히 분리됩니다.그래서 제가 해결해야 할 한 가지 경우는 '.'입니다. 그 다음에 대문자없는 문장이 뒤 따른다.
당신이 텍스트 필드로부터 텍스트를 얻는다면 내가 찾은 또 다른 옵션은이를 사용하는 것입니다 : 당신이 변환에 대해 걱정할 필요가 없습니다 있도록 자동으로 문장을 활용합니다
textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
CFStringTokenizer의 경우. 그것은 여전히 약어와 같은 엣지 경우를 설명하지 않지만, 적어도 나의 경우에는 사용자가 자동 대문자를 삭제할 수있는 옵션을 가지고있을 것입니다.
언어 독립적 구문 분석이 필요합니까? 그렇지 않다면 [문장 구성 요소 SeagatedByString : @ ""];로 근사값을 낼 수 있습니다. – danh
@danh 언어 독립적 인 구문 분석이 필요합니다. 또한 문자열이 모든 곳에서 사용되기 때문에 상당히 견고한 무언가가 필요합니다. 모든 케이스 (존재하는 경우)를 다루는 out-of-the-box 문장 토크 나이저를 정말 좋아할 것입니다. – Ramsel