내가 단어로 분할하고자하는 문장분할 텍스트
List<String> lookUp = new ArrayList<>();
lookUp.add("New York");
lookUp.add("Big Apple");
같은 일부 불가분 단어를 포함하는 목록을 가지고 있지만, 내 목록에 주어진 불가분 단어를 분할하지 않습니다. 그래서 예를 들어
String sentence = "New York is also called Big Apple";
은 나를
["New York", "is", "also", "called", "Big Apple"]
을 반환해야 내가 먼저 공백으로 문장을 분할하는 알고리즘을 쓰기 시작하고 내가 루프를 수행합니다 모든 단어를 들어 내가이 단어 여부를 확인하고 lookUp-list에서 바로 이웃이 발생하고, 사실이라면이 단어들을 함께 분석하십시오.
1) 내 lookUp-list에도 "George W. Bush"와 같은 단어가 두 개 이상있는 구가 포함되어 있다고 가정 해 보겠습니다. 내 알고리즘은 "George W"만 조회합니다. 와 "부시 (Bush)"라고 부르며 검색 목록에서 찾을 수 없으므로 3 단어로 나눕니다.
2) 더 중요한 질문 (질문 1은 무시할 수 있음) : 이미 라이브러리 또는 GATE 플러그인이 있습니까 (바퀴를 다시 만들 필요가 없도록)? 그리고 이것은 또한 독일어 구문에도 존재합니까?
List<String> lookUp = new ArrayList<>();
lookUp.add("New York");
lookUp.add("New Jersey");
lookUp.add("Big Apple");
lookUp.add("George W. Bush");
String sentence = "New York is also called Big Apple . New Jersey is located near to New York . George W. Bush doesn't live in New Mexico`";
String currentPhrase = "";
List<String> parseResult = new ArrayList<>();
for (String word : sentence.split("\\s+")) {
currentPhrase += (currentPhrase.isEmpty() ? "" : " ") + word;
if (lookUp.contains(currentPhrase)) {
parseResult.add(currentPhrase);
currentPhrase = "";
continue;
}
boolean phraseFound = false;
for (String look : lookUp)
if (look.startsWith(currentPhrase)) {
phraseFound = true;
break;
}
if (!phraseFound) {
parseResult.addAll(Arrays.asList(currentPhrase.split("\\s+")));
currentPhrase = "";
}
}
System.out.println(parseResult);
출력은 다음과 같습니다 : 나는 Java 7
하나 = (
그것은 너무 사소한 문제, 그래서 내가 믿는 :이 – Andremoniy
당신이 "abc"를 얻었고 당신의 검색에서 "ab"와 "bc"를 가지고 있다면? – aioobe
대체 방법 : 1) lookUp 항목에 의해 분할, 2) 3) 만약 그렇다면, 계속하십시오. 4) 그렇지 않다면, o를 쪼개십시오. n 공백. – jensgram