전체 글

    TF-IDF(Term Frequency - Inverse Document Frequency)

    TF-IDF(Term Frequency - Inverse Document Frequency)는 단어의 빈도와 역 문서 빈도를 사용하여 단어의 가중치를 나타내는 방법입니다. 간단하게 보겠습니다. 문서는 문장으로 이루어져 있습니다. 그리고 문장은 단어(term)로 구성됩니다. TF-IDF는 문서의 어떤 단어가 중요한지를 수치로 알려줍니다. 반대로 보면 단어가 문서에 대한 정보를 얼마나 가지고 있는가?를 의미합니다. 따라서 TF-IDF를 사용하여 문서와 단어의 관계를 수치로 확인할 수 있습니다. TF(Term Frequency) \(t\) : term \(d\) : document tf\((t,d)\) : \(d\)에 \(t\)가 나온 횟수 TF는 문서에 나온 단어의 빈도를 사용합니다. 문서에 어떤 단어가 많..

    텍스트랭크 알고리즘(TextRank Algorithm)

    데이터 요약의 extraction 방법 중 하나인 텍스트랭크(TextRank) 알고리즘을 보도록 하겠습니다. 2004년 Rada Mihalcea와 Paul Tarau의 TextRank: Bringing Order into Texts 논문에서 텍스트 처리를 위한 그래프 기반 랭킹 모델(graph-based ranking model)인 TextRank를 소개했습니다. graph-based ranking 알고리즘은 각 정점의 정보만을 고려하지 않고 전체 그래프의 글로벌 정보를 재귀적으로 계산하여 정점의 중요도를 결정하는 방법입니다. 텍스트랭크 알고리즘은 키워드(keyword) 추출과 문장(sentence) 추출 방법을 제공합니다. 그래프 기반 모델이기에 그래프 관련 용어가 나옵니다. 간단하게 보고 넘어가겠습니..

    페이지랭크 알고리즘 (PageRank algorithm)

    구글 검색 엔진의 핵심인 페이지 랭크 알고리즘은 1998년 Sergey Brin 과 Lawrence Page의 논문 'The Anatomy of a Large-Scale Hypertextual Web Search Engine'에서 등장했습니다. 논문에서는 design goal을 소개하면서 94년도와 97년도의 웹 검색을 비교합니다. 94년에는 검색 인덱스로 빠르고 정확하게 찾을 수 있는 반면에 97년에는 검색 인덱스로 좋은 결과를 찾을 수 없다고 말합니다. 종종 '쓰레기 값'들이 사용자가 원하는 정보를 가린다고 불편함을 소개하고 있습니다. In 1994, some people believed that a complete search index would make it possible to find any..

    linux kernel, vscode 연동

    리눅스 커널은 수많은 파일들로 구성되어 있습니다. vscode로 열어보면 평소에 사용하던 '함수의 정의로 이동'이 보이지 않습니다. tag를 이용한 방법을 소개합니다. GNU Global 정의를 찾기 위해 vscode의 C/C++ extension을 설치합니다. 이것을 설치하면 다음과 같이 정의로 이동 기능이 활성화된 것을 확인할 수 있습니다. 정의로 이동과 함께 추가해야 할 기능이 더 있습니다. 함수의 reference를 확인하는 기능을 추가해야 합니다. 많은 아키텍처와 파일들로 구성되어 있기에 정확한 곳을 찾는 것이 중요합니다. 이 extension을 사용하기 위해서 global gnu를 설치합니다. www.gnu.org/software/global/globaldoc_toc.html Tutorial ..

    pytube 설치

    pytube 유튜브 동영상을 다운로드 하기 위한 파이썬 라이브러리입니다. pytube is a very serious, lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos. 조금 더 자세한 설명은 더보기를 누르셔서 확인하실 수 있습니다. 더보기 YouTube is the most popular video-sharing platform in the world and as a hacker you may encounter a situation where you want to script something to download videos. For this I present to y..

    톰캣 클러스터링

    톰캣의 부하를 줄이기 위해 두 개의 톰캣으로 나누겠습니다. 두 번째 톰캣을 설치합니다. 저는 복사를 하겠습니다. sudo cp -a apache-tomcat-9.0.37 tomcat1 sudo cp -a apache-tomcat-9.0.37 tomcat2 같은 포트를 사용하면 충돌이 발생합니다. tomcat2의 Shutdown, Connect, ajp 포트를 변경합니다. /usr/local/tomcat2/conf/server.xml /* 8005 -> 8006 */ 8081 */ connectionTimeout="20000" redirectPort="8443" /> 8010 */ redirectPort="8443" /> 8006, 8081, 8010은 임의로 지정하셔도 됩니다. 변경한 후에 정상적으로 동..

    Wrapper 함수 생성

    함수들을 감싸는 wrapper 함수를 생성하겠습니다. 구조체 내에 함수 포인터 인자를 설정합니다. 예시로, wrap1.c와 wrap2.c의 함수를 만들겠습니다. 다음과 같은 구조체를 생성하여 wrap1, wrap2 파일 내에 모든 함수를 변수로 받습니다. struct Wrapper { int version #include "wrap1.h" #include "wrap2.h" } 사용할 매크로는 다음과 같습니다. #define DECLARE_FUNCTION(returnType, name)\ returnType name #define DECLARE_FUNCTION_POINTER(returnType, name)\ returnType (* name) 테스트할 함수를 다음과 같이 만들어봅니다. #ifndef __W..

    아파치 톰캣 연동 mac

    환경 OS : Catalina 10.15.6 톰캣 : apache-tomcat-9.0.37 아파치 : 2.4.46 mod_jk : tomcat-connectors-1.2.48 톰캣은 설치가 되어있다고 가정하겠습니다. 다음 명령어로 아파치를 설치합니다. brew install httpd 아파치와 톰캣 연동을 위해 JK Connector를 이용하겠습니다. JK Connector 설치 tomcat.apache.org/download-connectors.cgi 현재 최신 버전은 1.2.48입니다. tar -xvf tomcat-connectors-1.2.48-src.tar 압축을 해제하고 native 폴더로 이동합니다. 설치하기 전에 apxs의 위치를 찾습니다. find / -name apxs 저는 다음과 같은 ..