사용자가 적은 문장에서
특정 단어를 인식해서
DB에서 반응하여 출력하는 프로그램을 만들려합니다.
예를 들어
"안녕?" ==('안녕' 인식)==> "어 그래"
"넌바보야" ==('바보' 인식)==> "바다의 보배?"
이런식입니다.
아래는 시험험용으로 text 파일로 DB를 대체하고 있는 소스입니다.
Text 파일 내용 : 개나리, 말미잘, AAA
public static void main(String[] args) {
BufferedReader reader = null;
String str = "개나리?";
try {
reader = new BufferedReader(new FileReader("test.txt"));
String rl = reader.readLine();
System.out.println(rl); // Test 파일 전체 출력
if(rl.contains(str))
System.out.println("있다!");
else
System.out.println("네가 뭔말 하는 지 모르겠어!");
reader.close();
} catch (Exception e) {
// TODO: handle exception
}
이때 "개", "개나", "개나리", "개나리 "등은 인식하지만
기타외 문자가 붙을 시 어떻게 해야할 지 모르겠네요...
(기타외 문자가 붙으면 else문의 "네가 뭔말 하는 지 모르겠어!" 출력.)
StringTokenizer나 if를 쓰자니 너무 경우의 수가 많고... ㅠㅠ
좋은 방법이 없을까요?
아니면... DB에서 select문만으로 해결할 수 있는 방법이 있을까요?
예를 들어 Table이
┌────┬─────┐
│ word │response│
├────┼─────┤
│ 개나리│ 진달래 │
└────┴─────┘
이렇게 작성되어 있을 때
String str = "진달래꽃";
...(중략)
ResultSet rs = stmt.executeQuery("select * from wordList "
+ "where word like '%" + charsetChange(str) + "%';");
// charsetChange는 한글 인식을 위한 charset 변환 Method.
while (rs.next())
{
String[] arr = new String[2];
arr[0] = toUnicode(rs.getString("word"));
arr[1] = toUnicode(rs.getString("response"));
System.out.println(arr[0] + " : " + arr[1]);
}
이렇게 될 때
"개나리"라는 단어만 인식하여 response 컬럼에 있는 "개나리"를 출력할 수 있는 방법이 있을까요?
몇일을 고심했는 데...
답이 없네요.
일일이 경우 처리를 해서 캐노가다를 해야하는게 답인가요? ㅠㅠ
답변 부탁드리겠습니다....
특정 단어를 인식해서
DB에서 반응하여 출력하는 프로그램을 만들려합니다.
예를 들어
"안녕?" ==('안녕' 인식)==> "어 그래"
"넌바보야" ==('바보' 인식)==> "바다의 보배?"
이런식입니다.
아래는 시험험용으로 text 파일로 DB를 대체하고 있는 소스입니다.
Text 파일 내용 : 개나리, 말미잘, AAA
public static void main(String[] args) {
BufferedReader reader = null;
String str = "개나리?";
try {
reader = new BufferedReader(new FileReader("test.txt"));
String rl = reader.readLine();
System.out.println(rl); // Test 파일 전체 출력
if(rl.contains(str))
System.out.println("있다!");
else
System.out.println("네가 뭔말 하는 지 모르겠어!");
reader.close();
} catch (Exception e) {
// TODO: handle exception
}
이때 "개", "개나", "개나리", "개나리 "등은 인식하지만
기타외 문자가 붙을 시 어떻게 해야할 지 모르겠네요...
(기타외 문자가 붙으면 else문의 "네가 뭔말 하는 지 모르겠어!" 출력.)
StringTokenizer나 if를 쓰자니 너무 경우의 수가 많고... ㅠㅠ
좋은 방법이 없을까요?
아니면... DB에서 select문만으로 해결할 수 있는 방법이 있을까요?
예를 들어 Table이
┌────┬─────┐
│ word │response│
├────┼─────┤
│ 개나리│ 진달래 │
└────┴─────┘
이렇게 작성되어 있을 때
String str = "진달래꽃";
...(중략)
ResultSet rs = stmt.executeQuery("select * from wordList "
+ "where word like '%" + charsetChange(str) + "%';");
// charsetChange는 한글 인식을 위한 charset 변환 Method.
while (rs.next())
{
String[] arr = new String[2];
arr[0] = toUnicode(rs.getString("word"));
arr[1] = toUnicode(rs.getString("response"));
System.out.println(arr[0] + " : " + arr[1]);
}
이렇게 될 때
"개나리"라는 단어만 인식하여 response 컬럼에 있는 "개나리"를 출력할 수 있는 방법이 있을까요?
몇일을 고심했는 데...
답이 없네요.
일일이 경우 처리를 해서 캐노가다를 해야하는게 답인가요? ㅠㅠ
답변 부탁드리겠습니다....
contains 순서가 바뀐거 같은데
ㅇㅇ//정상출력 소스입니다.