메뉴 건너뛰기

프로그래밍


Docker로 Syntaxnet 을 사용하고자 할 때 결과물의 포맷을 좀 더 쉽게 파싱하거나 다룰 수 있도록 수정하는 방법입니다.


먼저, Docker 상에서 Syntaxnet 을 실행하는 방법은 아래 경로를 참조해 주세요.

"SyntaxNet을 Window에서 실행하기"


(* 여기서 컨테이너의 이름은 "syntaxnet"으로 지정되어 있습니다.)


수정전의 포맷은 아래와 같이 확인 할 수 있습니다. 아래의 명령어를 입력하면,

echo 'Bob brought the pizza to Alice .' | docker exec -i syntaxnet ./syntaxnet/demo.sh

아래와 같이 결과가 출력됩니다.

:
:
Input: Bob brought the pizza to Alice .
Parse:
brought VBD ROOT
 +-- Bob NNP nsubj
 +-- pizza NN dobj
 |   +-- the DT det
 +-- to IN prep
 |   +-- Alice NNP pobj
 +-- . . punct


이와 같은 결과의 형태를 수정하려면 먼저, Docker 이미지를 실행한 후 컨테이너에서 demo.sh 파일을 호스트로 꺼내 옵니다.

docker cp syntaxnet:/root/models/syntaxnet/syntaxnet/demo.sh demo.sh

아래와 같이 demo.sh 파일의 마지막 4라인을 주석처리 합니다.

PARSER_EVAL=bazel-bin/syntaxnet/parser_eval
MODEL_DIR=syntaxnet/models/parsey_mcparseface
[[ "$1" == "--conll" ]] && INPUT_FORMAT=stdin-conll || INPUT_FORMAT=stdin

$PARSER_EVAL \
  --input=$INPUT_FORMAT \
  --output=stdout-conll \
  --hidden_layer_sizes=64 \
  --arg_prefix=brain_tagger \
  --graph_builder=structured \
  --task_context=$MODEL_DIR/context.pbtxt \
  --model_path=$MODEL_DIR/tagger-params \
  --slim_model \
  --batch_size=1024 \
  --alsologtostderr \
   | \
  $PARSER_EVAL \
  --input=stdin-conll \
  --output=stdout-conll \
  --hidden_layer_sizes=512,512 \
  --arg_prefix=brain_parser \
  --graph_builder=structured \
  --task_context=$MODEL_DIR/context.pbtxt \
  --model_path=$MODEL_DIR/parser-params \
  --slim_model \
  --batch_size=1024 \
  --alsologtostderr \
#| \
#  bazel-bin/syntaxnet/conll2tree \
#  --task_context=$MODEL_DIR/context.pbtxt \
#  --alsologtostderr


그리고 다시 docker 컨테이너로 집어 넣습니다.

docker cp demo.sh syntaxnet:/root/models/syntaxnet/syntaxnet/demo.sh


자, 이제 syntaxnet을 아래와 같이 실행해 봅니다.

echo "Hello, gunman." | docker exec -i syntaxnet ./syntaxnet/demo.sh 1>result.txt


result.txt 파일의 내용을 확인합니다.

$ cat result.txt
1	Hello	_	X	UH	_	3	discourse	_	_
2	,	_	.	,	_	3	punct	_	_
3	gunman	_	NOUN	NN	_	0	ROOT	_	_
4	.	_	.	.	_	3	punct	_	_






번호 제목 글쓴이 날짜 조회 수
공지 [TIP] PYTHON 에서 "UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 6987: illegal multibyte sequence" 오류 날때... [14] 파이팅건맨 2016.02.20 46643
공지 [TIP] JQuery와 PHP로 이미지 파일을 업로드 하는 간단한 소스 (How to upload image file on PHP server by using JQuery) 파이팅건맨 2015.04.03 7678
공지 [TIP] php로 기상청에서 제공하는 기상정보 API 호출하기 파이팅건맨 2017.01.17 4613
145 [TIP] 네이버 영화 정보와 전문가 평점 얻어오기 파이팅건맨 2017.02.10 3004
144 [TIP] 네이버 오픈 API를 로컬 PC에서 호출하기 파이팅건맨 2017.02.01 1082
143 [TIP] php로 기상청에서 제공하는 기상정보 API 호출하기 파이팅건맨 2017.01.17 4613
142 [TIP] node 에서 Basic authentication 인증과 함께 http, https 요청하기 파이팅건맨 2016.09.01 724
141 [TIP] node의 lambda-local 테스트 팁 파이팅건맨 2016.08.19 531
140 [TIP] 데이터를 Node에서 암호화하고 PHP에서 복호화 하기 파이팅건맨 2016.08.19 566
» [TIP] Docker상의 Syntaxnet 결과 포맷을 수정하기 파이팅건맨 2016.08.07 1536
138 [TIP] SyntaxNet을 Windows에서 실행하기 [1] 파이팅건맨 2016.05.25 659
137 [TIP] TensorFlow를 윈도우에서 사용하기 (A way to use TensorFlow on Windows) [3] 파이팅건맨 2016.04.16 3907
136 [TIP] 파이선으로 TED에서 가장많이 사용된 단어들 줄세우기 파이팅건맨 2016.04.03 1160
135 [TIP] 파이선에서 구글 스프레드시트 사용하기 [5] 파이팅건맨 2016.03.27 3914
134 [TIP] 파이선에서 리스트를 사용하는 재미있는 예제 파이팅건맨 2016.03.15 591
133 [TIP] PYTHON 에서 "UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 6987: illegal multibyte sequence" 오류 날때... [14] 파이팅건맨 2016.02.20 46643
132 [TIP] 퍼포먼스를 높여주는 몇가지 코딩 예 파이팅건맨 2016.01.22 469
131 [TIP] JQuery와 PHP로 이미지 파일을 업로드 하는 간단한 소스 (How to upload image file on PHP server by using JQuery) 파이팅건맨 2015.04.03 7678
130 [TIP] 자작 커널을 위한 인터럽트 벡터 수정 (EZ-2410보드 대상) 파이팅건맨 2013.05.04 606
129 위치추적 [1] 우람사랑 2013.04.06 446
128 [TIP] MySQL - NaviCat 사용시 에러 확인방법 파이팅건맨 2010.02.23 944
127 [TIP] 설치된 코덱 리스트 얻어오기 파이팅건맨 2010.02.18 825
126 [TIP] VFW 에서 영상 압축을 위한 코덱을 코드상에서 선택하여 실시간 저장하는 방법입니다. 파이팅건맨 2010.02.04 1039
위로