나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

프로그래밍

  • [Kiwi] 지능형 한국어 형태소 분석기 0.4버전 업데이트

    2017.09.11 by ∫2tdt=t²+c

  • [Kiwi] 지능형 한국어 형태소 분석기 ver 0.3 - 알고리즘 최적화 & 메모리 풀

    2017.05.05 by ∫2tdt=t²+c

  • [Kiwi] 지능형 한국어 형태소 분석기 ver 0.2

    2017.04.29 by ∫2tdt=t²+c

  • [Python] TextRank 구현 코드

    2017.04.20 by ∫2tdt=t²+c

  • [Python] 특정 분포가 멱법칙(Power-law Distribution)을 따르는지 확인하기

    2017.04.11 by ∫2tdt=t²+c

  • [KIWI] 좋아, 형태소 분석기를 만들어봅시다. - 3

    2017.03.26 by ∫2tdt=t²+c

  • [KIWI] 좋아, 형태소 분석기를 만들어봅시다. - 2

    2017.03.26 by ∫2tdt=t²+c

  • [KIWI] 좋아, 형태소 분석기를 만들어봅시다. - 1

    2017.03.26 by ∫2tdt=t²+c

[Kiwi] 지능형 한국어 형태소 분석기 0.4버전 업데이트

속도가 만족할 만큼 나오지 않아서 아쉽길래 한동안 접어두고 있었는데, 갑자기 좋은 아이디어가 떠올라서 업데이트를 해보았습니다. 약간의 알고리즘 수정으로 최소 +50%~200%의 속도 향상을 달성할 수 있었는데, 기록하지 않고 넘어가기에 너무 아까워서 포스팅을 써보았습니다. 0.3버전까지 방법이전 포스팅에서도 간단히 적었듯이 형태소 분석기의 핵심은 마르코프 연쇄입니다. 각각의 형태소가 등장할 확률 및 한 형태소 다음에 다른 형태소가 등장할 확률을 계산해서, 그 확률이 가장 높은 형태소열을 찾는것이 형태소 분석기의 업무라고 할 수 있습니다. 원활한 이해를 위해 다음 예시를 들어보죠. 먹었다 위 단어를 분석한다고 해봅시다. 어떤 형태소가 들어갈 수 있는지 일단 나열해보자면, 다음과 같을 겁니다. 먹었다 먹/V..

프로그래밍/NLP 2017. 9. 11. 02:59

[Kiwi] 지능형 한국어 형태소 분석기 ver 0.3 - 알고리즘 최적화 & 메모리 풀

그새를 못 참고 업데이트했습니다. 이번 업데이트에서는 정확도 개선은 없었지만, 알고리즘 최적화와 메모리 관리 향상을 통한 성능 향상이 주요 내용입니다. 0.3 버전 업데이트 내역속도가 0.2 버전 대비 약 86%향상되었습니다. 1.알고리즘 최적화실행 속도를 높이기 위해서는 실행 시간의 대부분을 차지하는 함수를 튜닝하는게 좋습니다. 다행히도 마솔루야, 거룩하신 MS께서 내리신 Visual Studio에서 성능 분석에 아주아주 좋은 기능을 제공하더라구요. 이 기능을 활용하여 실행시간의 대부분을 소모하는 함수를 찾아 들어가보니 코드 순서를 바꾸고 불필요한 할당을 제거할 수 있는 부분이 있어서 라인 몇줄을 옮기고 지웠습니다. 별거 아닌 것 같은 작업이었지만 이를 통해 10%이상의 성능 향상을 얻을 수 있었죠. ..

프로그래밍/NLP 2017. 5. 5. 21:02

[Kiwi] 지능형 한국어 형태소 분석기 ver 0.2

최초 릴리즈 이후 약간의 성능 개선을 실시했어요. 조금 설명하자면 * Trie 할당 방법을 바꿔서 연속된 공간에 배치하도록 수정했습니다. 그 결과 자식 노드를 포인터로 지정하는게 아니라 상대 인덱스로 지정할 수 있게 바꿨습니다.struct KTrie { KTrie* next[51] = {nullptr,}; KTrie* fail = nullptr; ... 처음에는 0.1에서는 위와 같이 선언된 구조체를struct KTrie { int next[51] = {0,}; KTrie* fail = nullptr; KTrie* getNext(int i) const { return next[i] ? (KTrie*)this + next[i] : nullptr; } ... 이것처럼 고쳤습니다. x64환경에서는 포인터가 8..

프로그래밍/NLP 2017. 4. 29. 14:03

[Python] TextRank 구현 코드

앞선글(TextRank 기법을 이용한 핵심 어구 추출 및 텍스트 요약) 에서 텍스트 랭크 알고리즘을 소개하면서 직접 실험해보고자 파이썬 코드를 짰었는데요, 정리해서 공유해드립니다. 페이지랭크 계산에 networkx 패키지를 사용하므로, networkx가 설치되어있는지 확인부탁드립니다. * 의존 패키지: networkx import networkx import re class RawSentence: def __init__(self, textIter): if type(textIter) == str: self.textIter = textIter.split('\n') else: self.textIter = textIter self.rgxSplitter = re.compile('([.!?:](?:["\']|(?!..

프로그래밍 2017. 4. 20. 17:13

[Python] 특정 분포가 멱법칙(Power-law Distribution)을 따르는지 확인하기

주변에서 찾아볼 수 있는 많은 분포들은 멱법칙(Power-law)을 따릅니다. 멱법칙을 따르는 경우 상위 몇 %가 전체의 대부분을 차지하고 나머지들이 긴 꼬리(long tail)을 형성하게 됩니다. 이는 빈부 격차와 같은 사회 경제적인 분야뿐만 아니라 음파의 주파수 별 진폭 분포처럼 자연 과학에서도 흔히 발견되는 분포입니다. 사람이 사용하는 언어의 단어 분포(지프의 법칙)나 소셜 네트워크의 중심성 계수 값도 이런 분포를 따릅니다. 따라서 실제 실험을 통해서 얻은 결과가 이 법칙을 따르는지 확인해보는건 재미있으면서도 중요한 일이라고 할 수 있죠. 그래서 해당 분포가 멱법칙을 따르는지 계산해주는 파이썬 코드를 빠르게 짜보았습니다. 멱법칙(거듭제곱 회귀)은 위와 같은 공식으로 나타낼 수 있습니다. 주어진 자료..

프로그래밍 2017. 4. 11. 20:46

[KIWI] 좋아, 형태소 분석기를 만들어봅시다. - 3

(이미지 출처: http://akarui-japan.deviantart.com/art/Kiwi-Icon-100334949) 속도를 향상시키기한 어절이 A B C D E F와 같이 6개의 형태로 쪼개질 수 있고 A,B,C,D,E,F 각각에 일치가능한 형태소가 4개씩 있다고 하면 전체 가능한 형태소 조합은 4^6 = 4096가지입니다. 각각의 조합마다 6개의 형태소 등장확률 계산 및 6개의 품사 간 전이확률을 계산해야 하니 12회의 확률 계산이 필요하네요. 즉 4096 * 12 = 49152회의 연산이 필요합니다. 이 모든 조합을 계산하기에는 시간이 너무 아깝습니다. 어차피 이 중에서 우리가 알고싶은건 가장 등장확률이 높은 조합 1개인걸요. 만약에 A B C D E F를 A B C / D E F 로 두 덩이..

프로그래밍/NLP 2017. 3. 26. 22:01

[KIWI] 좋아, 형태소 분석기를 만들어봅시다. - 2

(이미지 출처: http://akarui-japan.deviantart.com/art/Kiwi-Icon-100334949) 하나의 단어를 형태소로 쪼개다보면 일치하는 패턴이 여러개 등장하는 경우가 많습니다. 예를 들어 '디자인하여' 라는 어절을 쪼개보면디자인하여 => 디자인 + 하 + 아가 되는데, 각각의 덩어리에 일치하는 형태소 목록은 다음과 같아요. 디자인 하 아 디자인/NNG 하/VV 아/EC 하/XSV 아/EF 하/XSA 아/IC 하/NNG ... '하'와 '아'의 경우 일치하는 녀석들이 더 많지만 여기서는 설명의 단순화를 위해 위와 같다고 하겠습니다.이 경우 조합 가능한 모든 경우의 수는 12가지가 되겠죠. 하지만 디자인하여는 디자인/NNG + 하/XSV + 아/EC로 분석되는게 맞습니다. 그러..

프로그래밍/NLP 2017. 3. 26. 22:01

[KIWI] 좋아, 형태소 분석기를 만들어봅시다. - 1

어쩌다 형태소 분석기를 개발하게 되었는지는 이전 글에 친절히 설명했고, 이번 글에서는 처음 개발하며 겪었던 문제를 소개합니다. 제일 처음 구현한 것은 아호코라식(Aho Corasick) 알고리즘이었습니다. Trie를 구성해 문자열 내에 포함되는 패턴을 빠르게 찾아내는 알고리즘이지요. 이름만 들으면 굉장히 어려울 것 같지만 다행히도 슬라이드세어에 한국어로 된 친절한 프레젠테이션이 있어서 https://www.slideshare.net/ssuser81b91b/ahocorasick-algorithm 이걸 보며 쉽게 구현할 수 있었습니다. (이미지 출처: http://akarui-japan.deviantart.com/art/Kiwi-Icon-100334949) 한글처리 알고리즘 코딩하기한국어 처리를 위해서 가장..

프로그래밍/NLP 2017. 3. 26. 22:01

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

c++ 리듬게임 Direct3D pg어 포니게임 php 한국고대경제와사회 BigFloat 토픽 모델링 악보 텍스트 마이닝 우리역사바로알기대회 문헌정보통계 라틴어 python 정보조직론 NLP kiwi 자연언어처리 영어구조론

방문자

오늘
어제
전체

페이징

이전
1 ··· 4 5 6 7 8 9 10 ··· 28
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바