[닷넷AI] 닷넷으로 개발하는 인공지능?

닷넷으로 개발하는 인공지능에 대해 가끔씩 끄적거려 보려고 합니다. 여러 주제들을 포괄적으로 끄적거리게 될것 같습니다.ㅎㅎㅎ
닷넷을 처음 시작한게 90년대 후반인 것 같습니다. 그때 베타버전부터 쭉~~~
그리고, 대학원 다니며 인공지능을 전공했습니다. 머 그러다 보니 인공지능 관련일을 계속하게 되었죠.
물론 닷넷이 AI에서 많이 사용되는 언어는 아닙니다만, 그래도 닷넷으로도 안될건 없겠죠.ㅎㅎ

그래서 제 경험들을 조금씩 적어볼까 합니다.

긴 시간을 두고 느긋하게 하나씩 써보도록 하겠습니다.:slight_smile:

14개의 좋아요

매우 관심이 있는 분야입니다 닷넷데브가 초거대 커뮤니티 답게 요즘 고수분들이 많이 모이시는것 같군요

3개의 좋아요

엇… .NET이 90년대에 없었을텐데… 있었나요…?

2개의 좋아요

닷넷이 2000년 인가 나오지 않았나요 ?
전 그때 부터 했던것 같군요

베타 버전이면 90년대 후반쯤 나왔겠네요…

3개의 좋아요

1.0 나오기 전 베타때에 첫 사용했었네요. 비슷한 시기였던것 같아요. 대학 다닐때니…ㅋ

1개의 좋아요

기억이 가물가물하네요.ㅋㅋ 아마 비슷한 시기가 아니었을까 합니다.ㅎㅎ

1개의 좋아요

퇴근 준비중입니다. 저도 어쩌다보니 이렇게 흘러왔어요.ㅡ.ㅜ

2개의 좋아요

[닷넷AI] 닷넷으로 개발하는 인공지능 1. DoStart(잡설 & 시작)

퇴근완료했습니다.ㅋㅋ
시작부터 너무 거창해보이지만 사실 별거 없는 글인데 관심을 가져주시는 분이 있어서 바로 막써보기 시작하겠습니다.

  • 주의사항 : 여튼저튼 전 UI/UX, Web 같은 건 모릅니다.ㅜ.ㅜ 그래서 그런 부분이 불필요한 내용으로만 대충 가겠습니다. 그런데 관심이 있으신 분은 정리 안 된 제 글을 피해서 가주세요.
    처음 C나 C++로 개발하면서 심심하면 메모리 leak에 좀 복잡해지면 debugging하다 날밤 까다보니 처음 접했을 당시 C#은 신세계였습니다. 그래서 공부 및 개발 프로세스에 적용하기 시작했습니다.

제 대학원 전공은 "지능형 시스템"이었습니다. 그 당시 이 분야에서 상당수는 Lisp나 matlab을 쓰셨죠. 머 간혹 intelligent agent 하시던 분은 java도 하시는 분도 있었구요. 새로운 바다에 뛰어들어 보겠다고 별다른 reference도 없던 시기 c#으로 하다가 빠져 죽을 뻔 했습니다.ㅡ_ㅡ;
여튼 그래서 OCR, 텍스트 마이닝, 기업 영업 데이터 분석, 의료 데이터 처리 등 다양한 데이터들을 처리하고 분석하기 위한 시스템을 개발하게 됩니다.
제가 쓸 내용들은 이런 경험들을 바탕으로 쭉… 쓸모없는 주제들로 채워나갈까 합니다. 물론 이런 이야기들을 쭈욱 길게 늘여갈 것이고, C#으로 인공지능 애플리케이션을 만드는 내용까지 찔끔찔끔 연결될 것입니다. 아, 파이썬이 간혹 등장할 수도 있으니 주의하셔야 합니다만, 될 수 있으면 C# 얘기 위주로 적도록 하겠습니다.

잡설은 좀 줄이고 간략히 시작에 앞서 얘기들을 적어보겠습니다.

인공지능의 기본은 지능을 가진 동물을 흉내내어 그 동물이 하는 행동을 컴퓨터가 알아서 해주게 하는 일입니다. 요즘 얘기들 나오는 ai에 비해 협소한 개념으로 초창기 대부분은 그냥 특정 업무를 컴퓨터를 통해 자동화하여 처리하자가 목표였습니다. 물론 학술적 목적에 다양한 시도들은 있었지만, 소위 ai라는 기술을 적용하는 분야라고 해봐야 그렇게 넓지 않았고, 정말 특수한 분야가 다였죠. 그래서 당시는 자연어처리, 디지털 신호처리, 지능형 시스템 등 인공지능 비슷한 세부전공들이 쭉 있었습니다.

자! 그럼 시작 삼아 아주 오래된 개발 경험부터 얘기를 시작해보겠습니다.(인공지능과 비슷하지만 다를 수 있어서 주의를 요함!!!)
2000년인가? 했던 알바중에 인터넷 게시판에서 데이터를 스크래핑해서, 분류 키워드에 따라 분류하여 특정 사이트의 게시판 카테고리에 분류 키워드 별로 박아넣는 것이었습니다.

  • 문제목록
    Q1. 데이터 스크래핑
    Q2. 게시판 텍스트 분류
    Q3. 키워드별 카테고리 게시판에 포스팅
    까짓거 돈준다는데 뭔들 못하겠어라며 달려들었습니다.
    S1. 우선 데이터 수집은 그 당시 네트워크 수업을 들으며 C 소켓으로 만드는 텍스트 브라우저를 프로젝트로 진행했던게 있어서 어떻게든 해결될 것 같았습니다. 물론 대부분의 게시판 게시글 순회 등은 특정 사이트가 대상이었기때문에 휴레스틱하게 처리하여 돌아가게 만들 수 있었습니다.

  • S2-1. S1에서 수집된 텍스트 파일들을 처리해야 했습니다. 그때, 생각한 심플한 아이디어가 텍스트 분류기를 이용하자였습니다. 그래서 Datamining이라는 원서에 있던 베이지안 분류기(Naive bayes classifier)를 C#으로 구현하게 됩니다. 물론 실제 한국어 데이터를 띄워쓰기 단위로 끊고 학습하는 것보다 형태소 분류를 해야 결과가 좋아집니다만, 텍스트를 키워드별로 분류하고 학습시키게 됩니다.

  • S2-2. 형태소 분류기를 그 당시에 개발하는건 주어진 과업의 밖에 일이고 너무 많은 시간이 걸립니다. 그래서 간단한 방법을 고민합니다. 그건, 사전을 만들어서 명사 이외의 단어는 다 버리는 전략을 취합니다. 오른쪽부터 최장일치법으로 한자씩 자르고 만들어 놓은 조사사전과 비교하고 나머지 잘리는 부분은 명사사전과 비교하여 추정하게 만듭니다. 머 그닥 성능이 뛰어나지 않고, 예외도 많지만 그럭저럭 굴러가게는 만듭니다.

  • S3. 그냥 게시판 DB에 박습니다.ㅋ

오늘은 여기까지 하고 주말에는 C#으로 베이지안 분류기 만들었던 옛날 소스를 발굴해내고 설명을 함께 올리도록 하겠습니다.

8개의 좋아요

아 당시에 형태소 분류기를만드셨군요 그게 나중에 발전해서 번역기까지 간것으로 알아요 당시에 데이타 수집도
단일 쓰레드에 db 성능도 안좋아서 지금 보면 성에 안차지만 정말 획기적이셨겠어요
스크래핑 기술만해도 상당히 각광 받던 시절인데

3개의 좋아요