KR20210098813A - 텍스트 데이터 수집과 분석 장치 및 방법 - Google Patents

텍스트 데이터 수집과 분석 장치 및 방법 Download PDF

Info

Publication number
KR20210098813A
KR20210098813A KR1020200012852A KR20200012852A KR20210098813A KR 20210098813 A KR20210098813 A KR 20210098813A KR 1020200012852 A KR1020200012852 A KR 1020200012852A KR 20200012852 A KR20200012852 A KR 20200012852A KR 20210098813 A KR20210098813 A KR 20210098813A
Authority
KR
South Korea
Prior art keywords
word
text
similar
unit
text data
Prior art date
Application number
KR1020200012852A
Other languages
English (en)
Inventor
김광수
Original Assignee
아키타입컴퍼니 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아키타입컴퍼니 주식회사 filed Critical 아키타입컴퍼니 주식회사
Priority to KR1020200012852A priority Critical patent/KR20210098813A/ko
Publication of KR20210098813A publication Critical patent/KR20210098813A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/358Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/355Class or cluster creation or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/247Thesauruses; Synonyms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/268Morphological analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/03Data mining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 웹사이트 텍스트 데이터 수집과 분석 방법 및 장치에 관한 것으로, 웹(web) 상의 블로그, 카페 등의 사이트에서 사용자가 지정한 키워드와 관련한 텍스트를 수집하고, 수집된 텍스트를 전처리하고 전처리된 텍스트에서의 단어 분포 및 구성을 분석하는 방법 및 장치에 관한 것이다.

Description

텍스트 데이터 수집과 분석 장치 및 방법{APPARATUS OF CRAWLING AND ANALYZING TEXT DATA AND METHOD THEREOF}
본 발명은 웹사이트 텍스트 데이터 수집과 분석 방법 및 장치에 관한 것으로, 보다 상세하게는 웹(web) 상의 블로그, 카페 등의 사이트에서 사용자가 지정한 키워드와 관련한 텍스트를 수집하고, 수집된 텍스트를 전처리하고 전처리된 텍스트에서의 단어 분포 및 구성을 분석하는 방법 및 장치에 관한 것이다.
4차 산업혁명과 인공지능, 데이터 사이언스의 출현으로 온라인의 여러 공간에 분포되어 있는 데이터를 분석하는 데 관심이 모아지고 있다. 온라인 공간에서 발견되는 데이터의 형태는 이미지, 동영상 및 텍스트로 나누어지며, 그 중에서도 텍스트 데이터의 양이 가장 많은 것으로 관찰된다. 유튜브, 인스타그램, 페이스북 등의 동영상과 이미지 중심의 SNS의 영향력이 날로 커지고 있으나 트위터와 같은 텍스트 중심의 SNS(Social Networking Service)가 미치는 파급력 또한 여전하므로 댓글형태의 텍스트 데이터 분석이 필요한 상황이다.
마케팅 활동에 있어서 산업의 전반적인 트렌드 파악은 필수적이며 이 경우 SNS나 블로그 및 카페 커뮤니티 등의 사이트에서 텍스트 데이터를 분석할 필요가 있다.
본 발명은 상기와 같은 필요성을 해결하기 위하여 고안된 것으로, 웹 상의 블로그, 카페 등의 사이트에서 사용자가 지정한 키워드와 관련한 텍스트를 수집하고, 수집된 텍스트를 전처리하고 전처리된 텍스트에서의 단어 분포 및 구성을 분석하는 방법 및 장치를 제공하기 위한 것이다.
본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 방법은, 키워드를 수집하는 단계; 상기 키워드와 관련된 사이트의 URL을 수집하는 단계; 상기 수집된 URL에 접속하여 텍스트를 수집하는 단계; 상기 수집된 텍스트의 전처리를 수행하는 단계;
상기 전처리된 텍스트에 단어 추출 알고리즘을 적용하여 단어를 추출하는 단계;상기 추출된 단어를 시각화하는 단계; 상기 전처리된 텍스트를 형태소 단위로 분리하고 유사 단어 추출 모델을 적용하는 단계; 상기 유사 단어 추출 모델에 단어를 입력하고 상기 입력된 단어와 유사한 단어를 추출하는 단계; 를 포함한다.
상기 유사 단어 추출 모델에 상기 입력된 단어와 유사한 단어를 추출한 결과를 시각화 하는 단계;를 더 포함한다.
상기 유사 단어 추출 모델은 Word2Vec 및 FastText 중 적어도 어느 하나이다.
상기 단어 추출 알고리즘은 soynlp, Okt 및 KKma 중 적어도 어느 하나이다.
상기 추출된 단어를 시각화하는 것은 WordCloud, Seaborn 및 Matplotlib 중 적어도 어느 하나를 이용하는 것이다.
본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 장치는, 키워드와 관련된 사이트의 URL을 수집하는 URL 수집부; 상기 수집된 URL에 접속하여 텍스트를 수집하는 텍스트 추출부; 상기 수집된 텍스트의 전처리를 수행하는 텍스트 전처리부;
상기 전처리된 텍스트에 단어 추출 알고리즘을 적용하여 단어를 추출하는 단어 추출부; 상기 추출된 단어를 시각화하는 단어 표시부; 상기 전처리된 텍스트를 형태소 단위로 분리하고 유사 단어 추출 모델을 적용하며, 상기 유사 단어 추출 모델에 단어를 입력하고 상기 입력된 단어와 유사한 단어를 추출하는 유사 단어 추출 모델 적용부;를 포함한다.
상기 유사 단어 추출 모델에 상기 입력된 단어와 유사한 단어를 추출한 결과를 시각화한다.
상기 유사 단어 추출 모델은 Word2Vec 및 FastText 중 적어도 어느 하나이다.
상기 단어 추출 알고리즘은 soynlp, Okt 및 KKma 중 적어도 어느 하나이다.
상기 추출된 단어를 시각화하는 것은 WordCloud, Seaborn 및 Matplotlib 중 적어도 어느 하나를 이용하는 것이다.
본 발명의 일 실시예에 따른 텍스트 데이터 수집과 분석 방법 및 장치는, 웹상의 블로그, 카페 등의 사이트에서 사용자가 지정한 키워드와 관련한 텍스트를 수집하고, 수집된 텍스트를 전처리하고 전처리된 텍스트에서의 단어 분포 및 구성을 분석할 수 있다.
본 발명의 일 실시예에 따른 텍스트 데이터 수집과 분석 방법 및 장치는, 유사 단어 추출 모델을 사용하여 웹상의 블로그, 카페 등의 사이트에서 수집된 텍스트에서 사용자가 입력한 단어와 유사한 단어를 추출할 수 있다.
도 1은 본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 시스템의 개략적인 구성을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 장치의 개략적인 구성을 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 환경 설정부의 실행 과정을 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 URL 수집부의 실행 과정을 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 텍스트 추출부의 실행 과정을 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따른 단어 추출부의 실행 과정을 나타내는 순서도이다.
도 7은 본 발명의 일 실시예에 따른 단어 표시부의 실행 과정을 나타내는 순서도이다.
도 8은 본 발명의 일 실시예에 따른 컨텐츠 토큰화부의 실행과정을 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 모델 표시부의 실행과정을 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 과정을 나타내는 순서도이다.
도 11은 단계 1008의 결과에 따른 최소 빈도수 이상의 단어를 빈도수에 따라 출력 위치, 출력 크기 및 출력 색을 결정하여 워드 클라우드 형태로 출력한 예를 나타내는 도면이다.
도 12는 단계 1009에 따라 FastText 모델에 "머신러닝"이라는 키워드가 입력되고 "머신러닝"과 가장 유사한 10개의 단어와 그 점수를 출력한 결과를 나타내는 도면이다.
이하, 본 명세서의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 명세서가 속하는 기술 분야에 익히 알려져 있고 본 명세서와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 명세서의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
도 1은 본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 시스템의 개략적인 구성을 나타낸 도면이다.
도 1을 참조하면, 텍스트 데이터 수집 및 분석 시스템(300)은, 텍스트 데이터 수집 및 분석 장치(200), 사용자 단말(100) 및 네트워크 통신망을 포함한다. 텍스트 데이터 수집 및 분석 장치(200)는, 키워드에 기초하여 웹의 블로그, 카페 또는 각종 커뮤니티 사이트로부터 키워드와 관련된 텍스트를 수집하고 수집된 내용에 기초하여 텍스트 데이터 수집 및 분석 결과를 사용자 단말(100)에 제공할 수 있다. 사용자 단말(100)은 텍스트 데이터 수집 및 분석 장치(200)에 키워드 입력을 제공하고, 텍스트 데이터 수집 및 분석 장치(200)로부터 텍스트 데이터 분석의 결과를 수신하여 출력할 수 있다.
사용자 단말(100)은 스마트폰(Smartphone), 스마트패드(SmartPad), 스마트 TV, 태블릿 PC등과 PCS(Personal Communication System), GSM(Global System for Mobile communication), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), IMT(International Mobile Telecommunication)-2000 단말, CDMA(Code Division Multiple Access)-2000 단말, W-CDMA(W-Code Division Multiple Access) 단말, Wibro(Wireless Broadband Internet) 단말 같은 데이터 처리 및 출력이 가능한 모든 종류의 무선 통신 장치 중 어느 하나일 수 있다.
텍스트 데이터 수집 및 분석장치(200) 및 사용자 단말(100)은 네트워크로 연결될 수 있다. 네트워크는 단말 및 서버와 같은 각각의 노드 상호 간에 정보 교환이 가능한 유, 무선의 연결 구조를 의미하는 것으로, 이러한 네트워크의 일 예에는 3GPP(3rd Generation Partnership Project) 네트워크, LTE(Long Term Evolution) 네트워크, 5G 네트워크, WIMAX(World Interoperability for Microwave Access) 네트워크, 인터넷(Internet), LAN(Local Area Network), Wireless LAN(Wireless Local Area Network), WAN(Wide Area Network), PAN(Personal Area Network), 블루투스(Bluetooth) 네트워크, 위성 방송 네트워크, 아날로그 방송 네트워크, DMB(Digital Multimedia Broadcasting) 네트워크 등이 포함되나 이에 한정되지는 않는다.
도 1을 참조하면, 사용자 단말(100)에서 입력되고 수집된 키워드는 텍스트 데이터 수집 및 분석 장치(200)로 전송되어 데이터 수집 및 분석 장치에 의해 입력 키워드 관련 텍스트 데이터가 수집 및 분석될 수 있다. 텍스트 데이터 수집 및 분석 장치(200)는 네트워크를 통해 사용자 단말(100)로 시각화한 텍스트 데이터 수집 및 분석 결과를 제공할 수 있다. 텍스트 데이터 수집 및 분석 장치(200)는 사용자의 입력 키워드 정보에 기초하여 웹의 블로그, 카페 또는 각종 커뮤니티 사이트에서 입력된 키워드와 관련된 텍스트를 수집할 수 있다.
텍스트 데이터 수집 및 분석 장치(200)는 키워드 정보에 기초하여 웹의 블로그, 카페 또는 각종 커뮤니티 등의 사이트로부터 키워드를 포함하는 텍스트를 획득하고 텍스트 데이터 분석을 수행하고, 분석 결과를 저장할 수 있다.
본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 장치(200)는 소프트웨어를 이용하여 구현될 수 있으며, 파이썬(python), ASP, PHP, JAVA, C, C++, Visual C++, C#, JavaScript, Visual Basic, Object-C, Delphi/Object, Ruby, VB.NET, R 등의 다양한 프로그래밍 언어를 사용하여 구현될 수 있다.
도 2는 본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 장치의 개략적인 구성을 나타내는 도면이다. 도 2를 참조하면, 텍스트 데이터 수집 및 분석장치(200)는 웹 크롤러부(210) 및 텍스트 데이터 분석부(220)를 포함한다. 웹 크롤러부(210)는 모듈 연결부(211), 환경 설정부(212), URL(Universal Resource Locator) 수집부(213), 텍스트 추출부(214), 텍스트 전처리부(215) 및 컨텐츠 토큰화부(216)를 포함한다. 텍스트 데이터 분석부(220)는 단어 추출부(221), 단어 표시부(222), 유사 단어 추출 모델 적용부(223) 및 모델 표시부(224)를 포함한다.
모듈 연결부(211)는 텍스트 데이터 수집 및 분석을 위한 라이브러리를 로드(load)한다. 로드되는 라이브러리는 웹사이트 접속 및 웹사이트 내용 수집, 텍스트 분석, 머신 러닝, 그래프 및 시각화, 컬렉션 등을 위한 패키지를 포함한다. 실시예에 따라서는 모듈 연결부(211)는 라이브러리 중 일부 함수만을 로드할 수 있다.
환경 설정부(212)는 텍스트 데이터 수집 및 분석을 위한 환경을 설정한다. 환경 설정부(212)는 웹 사이트 접속 및 웹 사이트의 텍스트 수집을 위해 URL 수집부(213) 및 텍스트 추출부(214)가 사용하는 브라우저의 드라이버(driver)에 대한 환경을 설정할 수 있다. 일 실시예로서 환경 설정부(212)는 크롬(chrome) 브라우저의 드라이버를 이용하기 위하여 크롬 브라우저를 위한 환경을 설정할 수 있으며, 기존 설정된 크롬 브라우저의 환경에 설정사항을 추가할 수 있다.
URL 수집부(213)는 사용자가 입력한 키워드를 이용하여 사이트의 URL을 수집할 수 있다. 키워드는 키워드와 관련되는 사이트를 검색하기 위하여 사용되며 URL 수집부(213)는 키워드를 이용하여 검색문을 생성하고 생성된 검색문을 브라우저의 드라이버에 입력하여 검색된 URL에 접속하고 해당 사이트의 내용을 수집할 수 있다. 예를 들어 사용자가"데이터사이언스"라는 키워드를 사용자 단말(100)에 입력하면 URL 수집부(213)는"데이터사이언스"라는 키워드를 이용해 검색문을 생성한 후 브라우저의 드라이버에 검색문을 입력하여 "데이터사이언스"라는 키워드와 관련된 URL을 획득할 수 있다.
URL 수집부(213)는 모듈 연결부(211)가 로드한 라이브러리를 이용하여 브라우저의 드라이버를 획득할 수 있다. 이를테면 selemium 라이브러리 중의 일부 함수를 사용하여 브라우저의 드라이버를 획득할 수 있다. URL 수집부(213)는 수집된 내용 중에서 텍스트 부분에 해당하는 URL과 해당 사이트의 타이틀을 수집하고 이를 배열, 컬렉션 또는 리스트 등의 다양한 데이터 구조에 저장할 수 있다.
텍스트 추출부(214)는 URL 수집부(213)가 수집한 URL로 접속하여 접속한 URL의 HTML(Hyper Text Markup Language) 태그를 파싱(parsing)하고 파싱한 태그를 이용하여 텍스트를 추출하고 추출된 텍스트를 배열, 컬렉션 또는 리스트 등의 다양한 데이터 구조로 저장할 수 있다.
텍스트 전처리부(215)는 텍스트 추출부(214)가 수집한 텍스트에서 특수 문자,개행 문자나 더블 스페이스를 제거하는 방식으로 전처리를 수행할 수 있다. 구체적으로는, 텍스트 추출부(214)가 추출한 텍스트가 포함된 데이터 구조에서 특수 문자, 개행문자 또는 더블 스페이스를 ''으로 치환하여 제거할 수 있다. 텍스트 전처리부(215)는 전처리된 텍스트를 리스트에 추가하며, 쓰기 모드로 파일을 오픈하고 리스트에 포함된 텍스트를 추출하고 추출된 텍스트에 구분자를 포함시켜 쓰기 모드로 오픈한 파일에 작성할 수 있다. 또한 텍스트 전처리부는 작성된 파일을 읽기 모드로 오픈하고 파일의 모든 행을 읽어 들인 후 구분자를 삭제하여 리스트에 추가하며, 리스트는 이후 설명할 단어 추출부(221)에서 사용될 수 있다.
컨텐츠 토큰화부(216)는 토큰(token)을 생성할 단어 데이터를 입력받은 후 최소 빈도, 최소 cohesion forward, 최소 right branching 엔트로피 등에 기반하여 단어 추출기를 생성하고, 생성된 단어 추출기에 컨텐츠 토큰화부(216)로 전달된 단어 데이터를 입력하고 학습(train) 과정을 거친 후 단어 추출기에서 단어를 추출할 수 있다.
컨텐츠 토큰화부(216)는 추출된 단어를 이용하여 cohesion score를 만들고 cohesion score를 입력하여 토커나이저(tokenizer)를 생성한 후 토커나이저를 이용하여 입력된 단어 데이터를 토큰화하고 토큰화된 단어를 반환한다. cohesion score는 하나의 글자가 나타난 이후 다른 글자가 나타나는 확률에 기반하여 계산되는 점수를 의미한다.
예를 들어 토커나이저는"나는 학교에 간다"와 같은 문장을 "나는", "학교에"및 "간다"와 같이 복수의 단어 구성 집합으로 변환할 수 있다.
단어 추출부(221)는 단어 추출 알고리즘에 기반하여 텍스트에서 단어를 추출한다. 단어는 명사, 형용사, 부사 또는 동사를 포함할 수 있으며 실시예에 따라서는 명사만을 추출하거나 형용사, 부사 또는 동사만을 추출할 수 있다. 단어 추출 알고리즘은 Okt, Kkma 또는 soynlp를 포함하며 단어 추출 알고리즘에 기반하여 추출된 단어는 파일로 작성되고 단어 추출부(221)는 파일을 읽어 들여 단어의 개수를 센 후 단어의 개수를 반환한다. soynlp 알고리즘은 Okt나 Kkma 알고리즘과는 달리 단어 사전을 구축하지 않고, cohesion score를 기반으로 단어를 추출할 수 있다.
단어 표시부(222)는 단어를 입력받아 단어의 빈도수에 따라 단어의 크기를 달리하여 단어 빈도를 표시할 수 있다. 단어 표시부(222)는 워드클라우드(WordCloud), Seaborn 및 Matplotlib 중 적어도 어느 하나의 모듈을 포함할 수 있다.
유사 단어 추출 모델 적용부(223)는 전처리된 텍스트를 형태소 단위로 분리하고 유사 단어 추출 모델을 적용할 수 있다. 형태소 단위로 분리한다는 것은 문장에서 형태소(단어)를 추출한다는 것을 의미할 수 있다. 이를테면 '너는 집에 있다'와 같은 문장에서 '너는','집에','있다' 와 같이 각각의 형태소가 추출될 수 있다. 유사 단어 추출 모델 적용부(223)는 유사 단어 추출 모델에 단어를 입력하고 입력된 단어와 유사한 단어를 추출할 수 있다. 유사 단어 추출 모델은 Word2Vec 또는 FastText 일 수 있다. 이 경우 Word2Vec는 단어들 간의 관계를 벡터상에 임베딩(embedding)하고 입력되는 단어와 유사한 단어들의 집합을 추출할 수 있으며, FastText는 합성어를 2가지 이상의 단어로 분리하고 각각의 단어와 유사한 단어 집합을 추출할 수 있다.
모델 표시부(224)는 t-SNE 모델을 생성하고 유사 단어 추출 모델을 이용하여 생성된 토큰을 입력받아 t-SNE 모델에 전달하여 모델의 3차원 좌표값을 생성하고 모델의 3차원 표시에 대한 레이아웃을 생성한 후 3차원 좌표값과 레이아웃을 이용하여 모델에 대한 도면을 표시할 수 있다.
도 3은 본 발명의 일 실시예에 따른 환경 설정부의 실행 과정을 나타내는 도면이다. 도 2 및 도 3을 참조하면, 단계 301에서 환경 설정부(212)는 브라우저 드라이버의 옵션 갖고오기 명령을 호출하여 브라우저의 설정 사항을 가져온다.
단계 302에서 환경 설정부(212)는 알람 설정이나 브라우저의 종류 등의 설정 사항을 추가하고 설정 사항을 환경 설정부(212)로 호출한 곳에 반환한다.
도 4는 본 발명의 일 실시예에 따른 URL 수집부(213)의 실행 과정을 나타내는 도면이다. 도 2 및 도 4를 참조하면, 단계 401에서 URL 수집부(213)는 사용자로부터 검색할 사이트에 대한 키워드를 입력 받는 방식으로 키워드를 수집할 수 있다. 키워드는 URL의 전체 내용과 관련되는 주제 또는 내용이 포함하는 단어일 수 있으며 사이트를 검색하기 위한 검색문의 일부로서 사용될 수 있다.
단계 402에서 URL 수집부(213)는 브라우저의 설정 사항을 이용하여 브라우저를 실행하고 URL에 접속한다. 본 발명의 일 실시예로서 브라우저는 크롬 브라우저일 수 있다.
단계 403에서 URL 수집부(213)는 URL의 한 페이지의 내용이 완전히 로딩되었는지 판단한다. URL 수집부(213)는 URL의 한 페이지의 내용이 완전히 로딩된 경우 다음 페이지 버튼을 클릭하여 다음 페이지로 진행한다.
단계 404에서 URL 수집부(213)는 URL의 다음 페이지 버튼이 없는 경우 전체 페이지 소스를 수집하고 텍스트에 해당하는 부분에서 제목과 링크를 각각 추출하여 배열, 컬렉션 또는 리스트 등의 데이터 구조에 저장한다. URL 수집부(213)는 HTML이나 CSS(cascading style sheets)의 태그(tag)로써 제목과 링크를 판단할 수 있다. 예를 들어 URL 수집부(213)는 ".text_area"와 같은 CSS 태그를 포함하는 HTML 구문에서 제목과 링크를 추출할 수 있다.
도 5는 본 발명의 일 실시예에 따른 텍스트 추출부의 실행 과정을 나타내는 도면이다. 도 2 및 도 5를 참조하면, 단계 501에서 텍스트 추출부(214)는 접속할 URL에서 수집되는 컨텐츠를 담을 컨텐츠 리스트와 예외 발생 URL을 담을 예외 URL 리스트를 생성하고 브라우저의 설정사항을 입력하고 브라우저에 대한 드라이버를 획득한다.
단계 502에서 텍스트 추출부(214)는 단계 404에서 URL 수집부(213)에 의해 수집된 URL 리스트를 이용하여 URL에 접속하고 URL 페이지의 소스를 가져온다.
단계 503에서 텍스트 추출부(214)는 특정 태그를 이용하여 URL의 텍스트 부분을 판별하고 텍스트 부분만을 추출하여 컨텐츠 리스트에 추가한다. 예를 들어 텍스트 추출부(214)는 ".se_textarea"와 같은 CSS 태그를 포함하는 HTML 구문에서 텍스트를 추출할 수 있으며 추출되는 텍스트의 전후 공백, 개행 또는 특수문자를 제거하여 텍스트를 추출할 수 있다.
단계 504에서 텍스트 추출부(214)는 더 이상 접속할 URL이 없는 경우 컨텐츠 리스트와 URL 리스트를 반환한다.
도 6은 본 발명의 일 실시예에 따른 단어 추출부(221)의 실행 과정을 나타내는 순서도이다. 도 2 및 도 6을 참조하면, 단계 601에서 단어 추출부(221)는 단어를 추출할 데이터 구조를 입력받고 유사 단어 추출 모델을 판별한다. 단어를 추출할 데이터 구조는 배열, 리스트 또는 사전일 수 있다. 단어를 추출할 데이터 구조는 텍스트 전처리부(215)에 의해 특수 문자, 개행 문자나 더블 스페이스등이 제거되는 방식으로 전처리된 텍스트를 포함할 수 있다.
단어 추출 모델은 'Okt','Kkma' 또는 'soynlp' 중에 어느 하나일 수 있다.
단계 602에서 단어 추출부(221)는 판별된 단어 추출 모델에 기반한 단어 추출 엔진을 추출한다. 예를 들어 판별된 단어 추출 모델이 'Okt' 인 경우 'Okt'에 기반한 단어 추출 엔진이 추출될 수 있다.
단계 603에서 단어 추출부(221)는 추출된 단어를 저장하기 위한 파일을 오픈하고 단어를 추출할 배열에서 URL별 내용을 읽어 들이고 단어를 추출하여 파일에 저장한다.
단계 604에서 단어 추출부(221)는 단어가 저장된 파일을 읽고 단어의 수를 센 후 단어의 수를 표시한다. 다양한 실시예에 따르면, 단어 추출부(221)는 파일의 행마다 단어를 저장하고 읽어 들이는 방법으로 단어의 수를 셀 수 있다. 한편, 단어 추출 모델이 'soynlp' 인 경우 단어 추출부(221)는 단어 추출 모델에 URL 전체 컨텐츠가 저장된 배열을 입력하여 사전(dictionary) 형식으로 단어를 추출할 수 있다. 사전 형식은 키(key)와 값(value) 형식으로 데이터를 저장하는 것을 의미하며, 단어 추출부(221)는 URL 전체 내용이 저장된 배열에서 단어를 추출하고 키와 값 형식으로 추출된 단어를 저장할 수 있다.
도 7은 본 발명의 일 실시예에 따른 단어 표시부(222)의 실행 과정을 나타내는 순서도이다. 도 2 및 도 7을 참조하면, 단계 701에서 단어 표시부(222)는 워드클라우드로 표시할 단어를 입력받고 폰트(font)의 경로, 배경색, 폭 및 높이를 포함하는 워드 클라우드의 설정을 입력한다.
단계 702에서 단어 표시부(222)는 워드 클라우드를 생성하고 워드 클라우드가 위치할 도면의 크기를 설정하고 축(axis) 표시를 해제한 후 워드 클라우드를 표시한다.
단어 표시부(222)는 워드클라우드 이외에 Seaborn 또는 Matplotlib를 사용하여 단어를 표시할 수 있다.
도 8은 본 발명의 일 실시예에 따른 컨텐츠 토큰화부의 실행과정을 나타내는 도면이다.
도 2 및 도 8을 참조하면, 단계 801에서 컨텐츠 토큰화부(216)는 최소 빈도, 최소 cohesion forward 및 최소 right branching 엔트로피에 기반하여 단어 추출기를 생성한다.
단계 802에서 컨텐츠 토큰화부(216)는 생성된 단어 추출기에 컨텐츠 토큰화부(216)로 전달된 단어 데이터를 입력하고 학습과정을 수행한 후 단어 추출기에서 단어를 추출한다.
단계 803에서 컨텐츠 토큰화부(216)는 추출된 단어를 이용하여 단어 가능 점수를 만든다.
단계 804에서 컨텐츠 토큰화부(216)는 단어 가능 점수를 입력하여 토커나이저를 생성한 후 토커나이저를 이용하여 입력된 단어들을 토큰화하고 토큰화된 단어를 반환한다.
도 9는 본 발명의 일 실시예에 따른 모델 표시부의 실행과정을 나타내는 도면이다.
도 2 및 도 9를 참조하면, 단계 901에서 모델 표시부(224)는 t-SNE 모델을 생성한다.
단계 902에서 모델 표시부는 유사 단어 추출 모델을 이용하여 생성된 토큰을 입력받아 t-SNE 모델에 전달하여 모델의 3차원 좌표값을 생성하고 모델의 3차원 표시에 대한 레이아웃을 생성한다.
단계 903에서 모델 표시부는 모델의 3차원 좌표값과 레이아웃을 이용하여 모델에 대한 도면을 표시함으로써 유사 단어 추출 모델에 단어를 입력한 결과를 시각화한다.
도 10은 본 발명의 일 실시예에 따른 텍스트 데이터 수집 및 분석 과정을 나타내는 순서도이다.
도 2 및 도 10을 참조하면, 단계 1001에서 환경 설정부(212)는 브라우저에 따른 작업 환경을 설정하며 브라우저의 드라이버를 이용하여 브라우저의 환경을 설정하고 설정된 브라우저 환경 설정값을 반환한다.
단계 1002에서 URL 수집부(213)는 수집하거나 사용자로부터 입력받은 키워드와 단계 1001에서 환경 설정부(212)가 반환한 브라우저 환경 설정값을 이용하여 사이트의 제목을 키(key)로 하고 사이트의 주소를 값(value)으로 하는 URL 사전을 반환한다.
단계 1003에서 텍스트 추출부(214)는 단계 1002에서 URL 수집부(213)가 반환한 URL 사전 및 단계 1001에서 환경 설정부(212)가 반환한 환경 설정값을 입력받아 각 URL별 텍스트 데이터 및 텍스트 데이터 수집이 실패한 사이트의 URL을 반환한다.
단계 1004에서 텍스트 전처리부(215)는 텍스트 추출부(214)가 수집한 텍스트 데이터에 대하여 특수문자나 더블 스페이스 등을 제거하는 방식으로 전처리를 수행하고 전처리된 텍스트를 리스트에 추가한다.
단계 1005에서 텍스트 전처리부(215)는 쓰기 모드로 파일을 오픈하고 리스트에 포함된 텍스트를 추출하고 추출된 텍스트에 구분자를 포함시켜 파일에 작성한다. 실시예에 따라 구분자는 개행문자 또는 탭이나 스페이스일 수 있다.
단계 1006에서 텍스트 전처리부(215)는 단계 1005에서 작성된 파일을 읽기 모드로 오픈하고 파일의 모든 행을 읽어들인 후 행마다 포함된 구분자를 삭제하여 리스트에 추가한다. 이를테면 텍스트 전처리부는 단계 1005에서 텍스트 전처리부(215)가 수행한 작업의 반대의 작업을 수행하여 텍스트가 포함된 리스트를 생성할 수 있다. 이 때 리스트에 추가되는 텍스트는 URL별로 수집되는 텍스트일 수 있다.
단계 1007에서 단어 추출부(221)는 단계 1006에서 생성된 리스트에 단어 추출 모델을 적용하고 명사를 추출한다. 단어 추출 모델은 soynlp, Okt 또는 Kkma 일 수 있다.
단계 1008에서 단어 표시부(222)는 단계 1007에서 추출된 명사 중 최소 빈도수 이상의 명사를 빈도수에 기반하여 출력 위치, 출력 크기 및 출력 색을 결정하여 워드 클라우드(Word Cloud)형태로 출력할 수 있다.
도 11은 단계 1008의 결과에 따른 최소 빈도수 이상의 단어를 빈도수에 따라 출력 위치, 출력 크기 및 출력 색을 결정하여 워드 클라우드 형태로 출력한 예를 나타내는 도면이다. 예시적으로 도 11을 참조하면, 워드 클라우드 형태에서는 핵심적인 명사가 돋보이도록 시각화되며, 명사들이 빈도수에 따라 서로 다른 크기와 색으로 표현될 수 있다. 일례로서 사용자는 "데이터사이언스"라는 단어를 입력하여 검색된 사이트에서 추출된 텍스트가 어떠한 단어들로 구성되어 있는지 워드 클라우드를 통하여 판단할 수 있다.
단계 1009에서 유사 단어 추출 모델 적용부는 단계 1006에서 생성된 리스트에 포함된 단어를 형태소 단위로 분리하고 형태소 단위로 분리된 단어에 유사 단어 검색 모델을 적용한다. 유사 단어 검색 모델은 Word2Vec 또는 FastText를 포함한다.
단계 1009에서 유사 단어 추출 모델 적용부는 유사 단어 검색 모델에 유사한 단어를 검색할 키워드 및 유사 단어 개수를 입력 받고 키워드와 가장 유사한 단어를 유사 단어 개수만큼 출력한다. 도 12는 단계 1009에 따라 FastText 모델에"머신러닝"이라는 키워드가 입력되고 "머신러닝"과 가장 유사한 10개의 단어와 그 점수를 출력한 결과를 나타내는 도면이다.
예시적으로 도 12를 참조하면, 사용자가 사용자 단말(100)에 "데이터사이언스"라는 단어를 입력하여 검색된 사이트에서 추출된 텍스트에 FastText 모델을 적용하고 "머신러닝"과 가장 유사한 10개의 단어를 검색한 결과 "머신", "러닝", "딥", "기계학습", "Learning", "자연어", "라이브러리", "Deep", "신경망", "알고리즘"이 텍스트가 수집된 사이트에서 추출되었음을 알 수 있다.
즉, 사용자는 본 발명을 통하여 키워드와 관련 있는 사이트에서 텍스트를 추출하고 추출된 텍스트에서 분석하고자 하는 단어를 입력하여 분석하고자 하는 단어와 유사한 단어를 검출함으로써 키워드와 관련된 분야의 경향 또는 동향을 파악할 수 있다.
한편, 모델 표시부는 단계 1009에서 적용된 유사 단어 검색 모델의 차원을 축소하여 화면에 표시할 수 있다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 명세서가 속하는 기술분야의 통상의 지식을 가진 자는 본 명세서가 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 명세서의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 명세서의 범위에 포함되는 것으로 해석되어야 한다.
한편, 본 명세서와 도면에는 본 명세서의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 명세서의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 명세서의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 명세서의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 명세서가 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (10)

  1. 키워드를 수집하는 단계;
    상기 키워드와 관련된 사이트의 URL을 수집하는 단계;
    상기 수집된 URL에 접속하여 텍스트를 수집하는 단계;
    상기 수집된 텍스트의 전처리를 수행하는 단계;
    상기 전처리된 텍스트에 단어 추출 알고리즘을 적용하여 단어를 추출하는 단계;
    상기 추출된 단어를 시각화하는 단계;
    상기 전처리된 텍스트를 형태소 단위로 분리하고 유사 단어 추출 모델을 적용하는 단계;
    상기 유사 단어 추출 모델에 단어를 입력하고 상기 입력된 단어와 유사한 단어를 추출하는 단계; 를 포함하는 텍스트 데이터 수집 및 분석 방법.
  2. 제 1 항에 있어서,
    상기 유사 단어 추출 모델에 상기 입력된 단어와 유사한 단어를 추출한 결과를 시각화 하는 단계;를 더 포함하는 텍스트 데이터 수집 및 분석 방법.
  3. 제 2 항에 있어서,
    상기 유사 단어 추출 모델은 Word2Vec 및 FastText 중 적어도 어느 하나인 텍스트 데이터 수집 및 분석 방법.
  4. 제 1 항에 있어서,
    상기 단어 추출 알고리즘은 soynlp, Okt 및 KKma 중 적어도 어느 하나인 텍스트 데이터 수집 및 분석 방법.
  5. 제 1 항에 있어서,
    상기 추출된 단어를 시각화하는 것은 WordCloud, Seaborn 및 Matplotlib 중 적어도 어느 하나를 이용하는 것인 텍스트 데이터 수집 및 분석 방법.
  6. 키워드와 관련된 사이트의 URL을 수집하는 URL 수집부;
    상기 수집된 URL에 접속하여 텍스트를 수집하는 텍스트 추출부;
    상기 수집된 텍스트의 전처리를 수행하는 텍스트 전처리부;
    상기 전처리된 텍스트에 단어 추출 알고리즘을 적용하여 단어를 추출하는 단어 추출부;
    상기 추출된 단어를 시각화하는 단어 표시부;
    상기 전처리된 텍스트를 형태소 단위로 분리하고 유사 단어 추출 모델을 적용하며, 상기 유사 단어 추출 모델에 단어를 입력하고 상기 입력된 단어와 유사한 단어를 추출하는 유사 단어 추출 모델 적용부; 를 포함하는 텍스트 데이터 수집 및 분석 장치.
  7. 제 6 항에 있어서,
    상기 유사 단어 추출 모델에 상기 입력된 단어와 유사한 단어를 추출한 결과를 시각화 하는 유사 단어 시각화부;
  8. 제 7 항에 있어서,
    상기 유사 단어 추출 모델은 Word2Vec 및 FastText 중 적어도 어느 하나인 텍스트 데이터 수집 및 분석 장치.
  9. 제 6 항에 있어서,
    상기 단어 추출 알고리즘은 soynlp, Okt 및 KKma 중 적어도 어느 하나인 텍스트 데이터 수집 및 분석 장치.
  10. 제 6 항에 있어서,
    상기 추출된 단어를 시각화하는 것은 WordCloud, Seaborn 및 Matplotlib 중 적어도 어느 하나를 이용하는 것인 텍스트 데이터 수집 및 분석 장치.



KR1020200012852A 2020-02-03 2020-02-03 텍스트 데이터 수집과 분석 장치 및 방법 KR20210098813A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200012852A KR20210098813A (ko) 2020-02-03 2020-02-03 텍스트 데이터 수집과 분석 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200012852A KR20210098813A (ko) 2020-02-03 2020-02-03 텍스트 데이터 수집과 분석 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20210098813A true KR20210098813A (ko) 2021-08-11

Family

ID=77314196

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200012852A KR20210098813A (ko) 2020-02-03 2020-02-03 텍스트 데이터 수집과 분석 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20210098813A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023191136A1 (ko) * 2022-03-30 2023-10-05 주식회사 씨에스리 빅데이터 분석 시각화 장치 및 방법
KR20240062196A (ko) 2022-10-28 2024-05-09 김현우 악성 댓글의 분석 정보 제공 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023191136A1 (ko) * 2022-03-30 2023-10-05 주식회사 씨에스리 빅데이터 분석 시각화 장치 및 방법
KR20240062196A (ko) 2022-10-28 2024-05-09 김현우 악성 댓글의 분석 정보 제공 방법

Similar Documents

Publication Publication Date Title
US9904936B2 (en) Method and apparatus for identifying elements of a webpage in different viewports of sizes
US20150242401A1 (en) Network searching method and network searching system
RU2696305C2 (ru) Браузинг изображений через интеллектуально проанализированные связанные гиперссылкой фрагменты текста
US20150295942A1 (en) Method and server for performing cloud detection for malicious information
US20140156255A1 (en) Enhancing automated terms listings in html document publishing based on user searches
CN105022803B (zh) 一种提取网页正文内容的方法及系统
US9563611B2 (en) Merging web page style addresses
Song et al. A hybrid approach for content extraction with text density and visual importance of DOM nodes
CN103544176A (zh) 用于生成多个页面所对应的页面结构模板的方法和设备
US20130339840A1 (en) System and method for logical chunking and restructuring websites
US9514113B1 (en) Methods for automatic footnote generation
CN108334508B (zh) 网页信息的提取方法和装置
CN105205080A (zh) 冗余文件清理方法、装置和系统
CN104331438A (zh) 对小说网页内容选择性抽取方法和装置
KR20210098813A (ko) 텍스트 데이터 수집과 분석 장치 및 방법
CN114443928B (zh) 一种网络文本数据爬虫方法与系统
Liu et al. Main content extraction from web pages based on node characteristics
Bu et al. An FAR-SW based approach for webpage information extraction
CN106951429B (zh) 增强网页评论显示的方法、浏览器及设备
Morie et al. Information extraction model to improve learning game metadata indexing
Motamedi et al. Smartphone information displays when reading news in persian and english languages
CN101576885A (zh) 提取动态生成网页内容的技术方案
CN106339381A (zh) 一种信息处理方法及装置
KR20120070713A (ko) 자연어 및 수식 색인화 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체
Ghaemmaghami et al. A new semantic approach to improve webpage segmentation

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application