안녕하세요..
비슷한 문자를 찾아내는 알고리즘을 생각하는 중입니다.
예를 들어서 ABCD 와 비슷한 문자인 A BCD AECD XBCD 이런식으로 매칭이 되는것을 찾아냈으면 하는데.. 마땅히 아이디어가 떠오르지 않습니다.
답변 부탁 드립니다..
터보C정복에 나오는 숫자 맞추기 게임 비슷하게 하면 되지 않을까요? 그러니까 글자와 자리가 모두 일치하면 몇 점, 글자만 일치하고 자리가 다르면 몇 점... 자릿수가 얼마나 다르냐에 따라 가중치를 둘 수도 있겠죠. 그래서 총점 얼마 이상이면 비슷하다고 판정하는 식이요. 사람이 느끼는 것과 비슷한 결과가 나오려면 점수를 튜닝하는 과정이 필요하겠네요.
저는 비트맵 같은걸 사용하면 되겠다고 생각했어요.
문자를 이루는 비트맵은 RGB 255,255,255와 0,0,0으로만 이루어져 있고, 이것들의 모든 픽셀을 AND연산하는 겁니다. 그래서 0,0,0이 몇개 이상이면 비슷한 글자라던지 이런 룰을... (노가다가 필요하다는 단점이 OTL)
아니면 미리 비슷한 문자들의 목록을 갖고 있어도 되겠는데요? ^^;
(용도가 무엇인지..)
용도는 목록을 자동화 시키기 위해서 입니다.
목록이 150개쯤 되는데 이전 목록과 비교하는 작업을 사람이 하다 보니 실수도 많고 시간도 걸리고 해서 입니다.
목록이 같은 항상 같은 문자열을 가지고 있다면 비교하기가 쉬운데 목록을 작성하는 사람에 따라서 약간씩 틀리게 써서 이러한 방법을 고안중입니다.
황혼보다 어두운 자여 내 몸에 흐르는 피보다 더 붉은 자여 시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라 우리 앞을 가로막고 있는 모든 어리석은 자 들에게 나와 그대의 힘을 위대한 파멸의 힘을 보여줄 것을
agrep인지 유사한 프로그램이 있는 것으로 알고 있습니다.
http://www.tgries.de/agrep/
리눅스용 패키지/Makefile등을 찾으신다면
http://packages.debian.org/unstable/text/agrep
Longest Common Subsequence 를 이용해서 결과값이 몇 이상이면 비슷한 문자열이다 라고 정의해서 사용해도 되지 않을까요?
예를 들어서 ABCD 와 LCS 를 돌렸을때 A BCD -> 4 AECD -> 3 XBCD -> 3
의 결과값이 나오겠죠.
----------- 청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법http://sozu.tistory.com
Edit distance란 개념이 있습니다.
string A와 B를 비교할 때, A에서 몇번의 insertion / deletion / substitution 단계를 거쳐 B로 갈 수 있는 지를 비교하는...
구글님께 여쭤보면 자세한 알고리즘이...
;)
일단 매칭의 기준이 뭔지 부터 정하셔야 할듯... 그렇지 않고선 결론을 얻기가 힘드네요.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h> do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
PHP의 빌트인 함수에 들어있는 것중에 similar_text와 levenshtein이 있는데 요것도 참고가 될지 모르겠네요.
http://kr.php.net/similar_texthttp://kr.php.net/levenshtein
----http://nohmad.tumblr.com/
답변 감사합니다.. 도움이 많이 되었습니다. :)
dict와 dictd 소스를 보면 될 것 같습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://cinsk.github.io/cfaqs/
지문 인식이라던지 화상 인식, 필기체 인식은 신경망을 씁니다.
텍스트검색에 신경망 쓰는걸 연구해보면 재밌을거같군요
아직 그런신경망은 못봤습니다만;
Lucene이란 검색엔진을 보면, 원하시는 검색도 포함되어 있는듯합니다. 시간이 넉넉하시다면, 이를 검토해보심이 어떨지?
아래 참고는 query의 예를 담고 있습니다. * 참고 : http://jakarta.apache.org/lucene/docs/queryparsersyntax.html * 100% Java로 구현되어 있음; 검색해보면 C++ 이나, C#구현도 어렵지 않게 찾을 수 있을듯.
------------------ P.S. -------------- 지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
신경망 쓰세요. 텍스트 인식은 아주 초보적인 수준이니 어렵지 않게 만들 수 있을겁니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
터보C정복에 나오는 숫자 맞추기 게임 비슷하게 하면 되지 않을까요?그
터보C정복에 나오는 숫자 맞추기 게임 비슷하게 하면 되지 않을까요?
그러니까 글자와 자리가 모두 일치하면 몇 점, 글자만 일치하고 자리가 다르면
몇 점... 자릿수가 얼마나 다르냐에 따라 가중치를 둘 수도 있겠죠. 그래서 총점 얼마
이상이면 비슷하다고 판정하는 식이요. 사람이 느끼는 것과 비슷한 결과가 나오려면
점수를 튜닝하는 과정이 필요하겠네요.
저는 비트맵 같은걸 사용하면 되겠다고 생각했어요.문자를 이루는 비
저는 비트맵 같은걸 사용하면 되겠다고 생각했어요.
문자를 이루는 비트맵은 RGB 255,255,255와 0,0,0으로만 이루어져 있고, 이것들의 모든 픽셀을 AND연산하는 겁니다. 그래서 0,0,0이 몇개 이상이면 비슷한 글자라던지 이런 룰을... (노가다가 필요하다는 단점이 OTL)
아니면 미리 비슷한 문자들의 목록을 갖고 있어도 되겠는데요? ^^;
아니면 미리 비슷한 문자들의 목록을 갖고 있어도 되겠는데요? ^^;
(용도가 무엇인지..)
용도는 목록을 자동화 시키기 위해서 입니다.목록이 150개쯤 되는
용도는 목록을 자동화 시키기 위해서 입니다.
목록이 150개쯤 되는데 이전 목록과 비교하는 작업을 사람이 하다 보니
실수도 많고 시간도 걸리고 해서 입니다.
목록이 같은 항상 같은 문자열을 가지고 있다면 비교하기가 쉬운데
목록을 작성하는 사람에 따라서 약간씩 틀리게 써서 이러한 방법을
고안중입니다.
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
agrep인지 유사한 프로그램이 있는 것으로 알고 있습니다.
agrep인지 유사한 프로그램이 있는 것으로 알고 있습니다.
http://www.tgries.de/agrep/리눅스용 패키지/
http://www.tgries.de/agrep/
리눅스용 패키지/Makefile등을 찾으신다면
http://packages.debian.org/unstable/text/agrep
^^
Longest Common Subsequence 를 이용해서 결과값이 몇 이상이면 비슷한 문자열이다 라고 정의해서 사용해도 되지 않을까요?
예를 들어서 ABCD 와 LCS 를 돌렸을때
A BCD -> 4
AECD -> 3
XBCD -> 3
의 결과값이 나오겠죠.
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
Edit distance란 개념이 있습니다.string A와 B를
Edit distance란 개념이 있습니다.
string A와 B를 비교할 때, A에서 몇번의 insertion / deletion / substitution 단계를 거쳐 B로 갈 수 있는 지를 비교하는...
구글님께 여쭤보면 자세한 알고리즘이...
;)
일단 매칭의 기준이 뭔지 부터 정하셔야 할듯...그렇지 않고선 결론을
일단 매칭의 기준이 뭔지 부터 정하셔야 할듯...
그렇지 않고선 결론을 얻기가 힘드네요.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
PHP의 빌트인 함수에 들어있는 것중에 similar_text와 leve
PHP의 빌트인 함수에 들어있는 것중에 similar_text와 levenshtein이 있는데 요것도 참고가 될지 모르겠네요.
http://kr.php.net/similar_text
http://kr.php.net/levenshtein
----
http://nohmad.tumblr.com/
답변 감사합니다..도움이 많이 되었습니다. :)
답변 감사합니다..
도움이 많이 되었습니다. :)
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
dict와 dictd 소스를 보면 될 것 같습니다.
dict와 dictd 소스를 보면 될 것 같습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
지문 인식이
지문 인식이라던지 화상 인식, 필기체 인식은 신경망을 씁니다.
텍스트검색에 신경망 쓰는걸 연구해보면 재밌을거같군요
아직 그런신경망은 못봤습니다만;
Lucene이란 검색엔진을 보면, 원하시는 검색도 포함되어 있는듯합니다.
Lucene이란 검색엔진을 보면, 원하시는 검색도 포함되어 있는듯합니다.
시간이 넉넉하시다면, 이를 검토해보심이 어떨지?
아래 참고는 query의 예를 담고 있습니다.
* 참고 : http://jakarta.apache.org/lucene/docs/queryparsersyntax.html
* 100% Java로 구현되어 있음; 검색해보면 C++ 이나, C#구현도 어렵지 않게 찾을 수 있을듯.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
그러한 패턴 인식은 신경망이 좋습니다.
신경망 쓰세요. 텍스트 인식은 아주 초보적인 수준이니 어렵지 않게 만들 수 있을겁니다.
댓글 달기