# 형태소 및 품사 빈도 분석
- 작성일: 2021년 6월 25일(금)
- 작성자: jino
## 목차
[TOC]
## 프로그램 동작 방식
- 형태소 및 품사 빈도 분석 프로그램
1. 명령행 인자로 들어온 research, essay 정보 파싱하여 db에 삽입
1-1. tbl_research 테이블에 데이터 삽입
1-2. tbl_essay 테이블에 입력할 데이터 삽입
2. 텍스트 파일을 열어 형태소 분석
2-1. Out 파일 출력
3. out 파일을 읽어 pos 테이블에 품사 빈도 저장
4. out 파일의 분석 된 형태소와 tbl_pysdic 테이블과 비교하여, tbl_psypos_counting 테이블에 빈도 저장
5. 저장된 tbl_pos_counting와 tbl_psypos_counting의 빈도 csv 파일로 저장
- psydic 생성 프로그램
1. 엑셀 파일 입력
2. 엑셀 파일을 읽어 psydic 테이블에 입력
## 사전준비
1. MariaDB 도커로 설치
- 도커 설치
- https://www.docker.com/get-started 에서 도커 다운로드 및 설치
- 도커로 MariaDB 및 DBeaver 설치
- https://firework-ham.tistory.com/105 보고 따라하기
2. database 생성
- DBeaver로 아래 sql 실행
```
CREATE DATABASE pos_analysis DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
```
2. MariaDB 테이블 생성
- DBeaver로 아래 sql 하나 하나 실행

```
use pos_analysis;
CREATE TABLE tbl_research(
research_name VARCHAR(100) NOT NULL PRIMARY KEY,
research_date DATETIME
);
```
```
use pos_analysis;
CREATE TABLE tbl_essay(
essay_name VARCHAR(100) NOT NULL PRIMARY KEY,
file_name VARCHAR(100),
essay_memo VARCHAR(900),
essay_author VARCHAR(50),
essay_from VARCHAR(100),
essay_type VARCHAR(100),
research_name VARCHAR(100) NOT NULL,
FOREIGN KEY (research_name) REFERENCES tbl_research(research_name)
);
```
```
use pos_analysis;
CREATE TABLE tbl_pos_counting(
tag VARCHAR(300) NOT NULL,
count INT NOT NULL,
essay_name VARCHAR(100) NOT NULL,
PRIMARY KEY(tag, count, essay_name),
FOREIGN KEY (essay_name) REFERENCES tbl_essay(essay_name)
);
```
```
use pos_analysis;
CREATE TABLE tbl_psypos_counting(
tag VARCHAR(300),
count INT,
essay_name VARCHAR(100) NOT NULL,
PRIMARY KEY(tag, count, essay_name),
FOREIGN KEY (essay_name) REFERENCES tbl_essay(essay_name)
);
```
```
use pos_analysis;
CREATE TABLE tbl_psydic(
word VARCHAR(300) NOT NULL,
type VARCHAR(100) NOT NULL,
PRIMARY KEY(word, type)
);
```
3. python 라이브러리 설치
- requirements.txt 이용하여 필요 라이브러리 설치
```
pip3 install -r ./requirements.txt
```
4. tbl_psydic 생성
- psydic.py 실행
- psydic.py 실행 시 인자값
```
--file_path : 엑셀 파일 위치 (필수)
```
- tbl_psydic 생성 프로그램 실행 예시
```
python3 psydic.py --file_path ./data/개발자전달용_샘플심리사전.xlsx
```
- tbl_psydic 테이블에 정보가 생성됨.
## 형태소 및 품사 분석
- morph_analysis.py 실행
- morph_analysis.py 실행 시 인자값
```
--file_path : 텍스트 파일 위치 (필수)
--research_name : 리서치 명 (필수)
--essay_name : 에세이 명 (필수)
~~~~
--research_date : 리서치 날짜 (선택) ex) 2021-06-25 09:30:28, 2021-06-25
--essay_author : 에세이 작성자 (선택)
--essay_memo : 에세이 메모 (선택)
--essay_from : 에세이 출처 (선택)
--essay_type : 에세이 유형 (선택)
```
- 형태소 및 품사 빈도 분석 프로그램 실행 예시
```
morph_analysis.py --file_path ./data/test2.txt --research_name=test1 --research_date=2021-06-25 --essay_name=test1
```
- 분석 결과는 DB와 result폴더에 생성됨.