본문 바로가기

분류 전체보기

[NLP] 텍스트 마이닝의 개념과 전체적인 프로세스에 대하여 해당 글은 텍스트 분석 강의를 바탕으로 작성하였습니다. 첫 번째 강의인 Text Analytics는 텍스트 분석의 전체적인 개요와 프로세스에 대한 설명으로 이루어져있으며, 목차는 다음과 같다. 01 Text Analytics: Overview 강의 링크: https://www.youtube.com/watch?v=UInnl60pzkA&list=PLetSlH8YjIfVzHuSXtG4jAC2zbEAErXWm Background 80% 이상의 새로 생기는 데이터들은 비정형 데이터이고, 그중에서도 text data가 큰 비중을 차지한다. 검색어에 맞는 문서를 반환(retrieval) 해주는 것 만으로는 충분하지 않다. 즉, 새로운 지식을 찾아내는 것이 요구된다는 것이다. Definition Text Data를 다.. 더보기
[Elasticsearch] 색인의 모든 문서를 반복 / 스크롤하는 방법 목적 인덱스 내의 전체 문서를 돌며 각 필드의 데이터를 가져와 처리를 해야 하는 경우 elastic search의 scroll을 이용하는 유용한 코드가 존재한다. 전체 코드 def iterate_all_documents(es, index, logger, pagesize=250, scroll_timeout="15m", **kwargs): """ Helper to iterate ALL values from a single index Yields all the documents. """ is_first = True while True: # Scroll next try: if is_first: # Initialize scroll result = es.search(index=index, scroll=scroll_.. 더보기
[WIL] 2021년 9월 넷째 주/ 10월 첫째 주 WIL 9월 넷째 주의 절반은 추석과 함께 실종되어버렸다. 그리하여.. 9월 넷째 주 WIL은 아래 세 게시글로 스무스하게 대체하려고 한다. [Python] Beutiful Soup4 - decompose() 와 extract() [Spark] SQL - explode()를 사용하여 list 형태의 Row 분리하기 [Spark] SQL - 두 컬럼을 병합하여 새로운 Dataframe 만들기 📝 10월 5일 (화) ▪️NLP - Word2Vec 모델 Load 시 UnicodeDecodeError UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte 해결 KeyedVectors.load_word2vec_for.. 더보기
[Spark] SQL - 두 컬럼을 병합하여 새로운 Dataframe 만들기 이전 글에서 list 형태로 저장되어있는 데이터를 각각의 row들로 분리하여 두 컬럼을 추출하는 것까지 진행하였다. 다음 순서로 두 컬럼을 이어붙여 아래와 같은 Dataframe을 생성하려고 했으나 pandas의 concat 역할을 수행하는 pyspark의 함수를 찾을 수 없었다. 단순히 join으로는 두 컬럼을 가로로 붙일 수 없다. 대안 두 데이터 프레임에 monotonically_increasing_id() 를 이용하여 id를 부여한다. id를 기준으로 left join 한다. id를 삭제한다. df1 = df1 .withColumn("id", monotonically_increasing_id()) df2 = df2 .withColumn("id", monotonically_increasing_id(.. 더보기
[Spark] SQL - explode()를 사용하여 list 형태의 Row 분리하기 원본 데이터셋은 위와 같이 되어있으며 여기서 Brand와 Product 칼럼을 추출하고자 하였다. 하지만 select 결과 아래와 같이 Row들이 list형태로 들어가있었다. > df.select(df.Brand, df.Product) +--------------------+--------------------+ | Brand| Product| +--------------------+--------------------+ |[LO, LO, LO, Non-...|[AirPods Pro, Air...| +--------------------+--------------------+ pyspark.sql.functions.explode explode함수는 주어진 배열 또는 맵의 각 요소에 대해 새 행을 반환한다.. 더보기
[Python] Beutiful Soup4 - decompose() 와 extract() 목표 미디어 위키 페이지에서 중첩된 리스트 내의 요소들을 텍스트로 추출한다. 위와 같은 중첩 리스트에서 list 내의 text를 모두 추출한 결과 다음과 같았다. 중첩 리스트의 텍스트가 모두 추출되고, 그 다음 요소에 중복해서 등장한다. 따라서 두 list를 분리하기 위해 두 가지 방식을 알게 되었다. .decompose() 태그를 트리에서 제거한 다음, 그와 그의 내용물을 완전히 파괴한다. lists = content.find_all('li') for idx in range(len(lists)): if lists[idx].ul is not None: lists[idx].ul.decompose() text = lists[idx].text print(f"{idx} 번째 list : {text}") 그 결과.. 더보기
[NLP/논문 리뷰] 위키피디아 기반 개체명 사전 반자동 구축 방법 Abstract 목적: 본 연구에서는 개체명 사전을 반자동으로 구축하는 방법을 제안한다. 방법: 1. 능동 학습을 이용하여 위키피디아 분류정보로 구성된 가상 문서를 개체명 범주 당 하나씩 생성한다. 2. 잘 알려진 정보검색 모델인 BM25를 이용하여 위키피디아 엔트리와 가상문서 사이의 유사도를 계산한다. 3. 유사도를 바탕으로 각 위키피디아 엔트리를 개체명 범주로 분류한다. 1. 서론 기존의 개체명 인식 방법은 크게 규칙 기반과 확률 기반 두 가지로 나뉜다. 1. 규칙기반 방법 2. 확률기반 방법 규칙 기반 방법 정규표현식과 같은 패턴과 개체명 사전을 이용하는 방법 좋은 패턴의 생성 방법과 개체명 사전의 크기가 성능 향상을 위한 요건이 된다. 확률 기반 방법 대용량의 개체명이 태깅된 말뭉치(corpus).. 더보기
[WIL] 2021년 9월 셋째 주 WIL 📝 9월 13일 (월) ▪️ MediaWiki 미디어위키 텍스트 원문 보기 원래 주소 뒤에 action=raw를 추가 https://도메인/wiki/글제목?action=raw Ex) 위키백과의 삼성 갤럭시 버즈 페이지 ?action=raw를 추가하여 원문 확인한 결과 https://ko.wikipedia.org/wiki/삼성_갤럭시_버즈?action=raw Ref. https://zetawiki.com/wiki/미디어위키_텍스트_원문_보기 wiki extractor에서 개체명의 language템플릿을 보존하여 text 추출하기 wiki extractor를 이용하여 plain text 추출 시 개체명의 외국어 명이 담긴 language template은 제거되어버리는 issue가 있었다. 삼성 갤럭시 버즈.. 더보기