자연 언어 처리 라이브러리 GiNZA에서 고유 표현 추출 해 보았다
이 기사의 목적
최근 Python에서 일본어의 고유 표현 추출 (NER)을 쉽게 사용하고 싶다고 생각하고 여러 가지를 찾고 있었을 때 GiNZA
라는 것을 알았기 때문에 사용해 보았습니다.
덧붙여서, 고유 표현 추출은 자연 언어 처리의 태스크의 하나로, 이하의 그림과 같이 일자나 인물 등, 특정의 단어를 검출하는 것입니다.
GiNZA 정보
GiNZA
는 자연 언어 처리 (NLP)를 수행하는 라이브러리 중 하나이며 고유 표현 추출 외에도 다양한 작업을 수행 할 수 있습니다.
정확하게는 spaCy
라는 자연 언어 처리 라이브러리가 있지만, 그 일본어 처리 부분을 담당하고 있다고 느낀다.
자세한 내용은 다음을 확인하십시오. 이번에는 고유 표현 추출에 대해서만 소개합니다.
GitHub: megagonlabs/ginza
제4회 spaCy/GiNZA를 이용한 자연 언어 처리
준비
먼저 spaCy
와 GiNZA
를 준비하십시오.
!pip install -U ginza
import spacy
from spacy import displacy
nlp = spacy.load('ja_ginza')
이제 spaCy
에서 spaCy
모델을로드 할 수 있으므로 처리 준비가 완료됩니다.GiNZA
를 사용하는 경우 여기에서 멈출 수 있습니다.이 경우 GitHub을 참조하십시오.
데이터 준비
그런 다음 분석 할 샘플 데이터를 준비합니다.
이번에는 Longwit가 공개 한 livedoor 뉴스 데이터를 사용합니다.
데이터는 9 개의 장르로 나뉘어진 뉴스이므로, 이번에는 그들로부터 하나씩 뉴스 텍스트를 추출하고, 9 개의 뉴스 텍스트에 대해 고유 표현 추출을 실시합니다.
이것이 텍스트 장르의 특기와 실수를 알지 못하는 것입니다.
여기에서 데이터를 다운로드하고 압축을 풉니 다.
livedoor 뉴스 코퍼스
!wget https://www.rondhuit.com/download/ldcc-20140209.tar.gz
!tar zxvf ldcc-20140209.tar.gz
고유 표현 추출
텍스트 파일의 경로를 지정하면, 그것을 읽고 구문 분석을 위해 코드를 썼다.
#テキスト読み込み
filepath = "./text/dokujo-tsushin/dokujo-tsushin-4778030.txt"
with open(filepath) as f:
s = f.read()
#ここでいろんな処理が行われる
doc = nlp(s)
#固有表現抽出の結果の描画
displacy.render(doc, style="ent", jupyter=True)
결과는 다음과 같습니다.
좋은 느낌으로 추출 할 수 있습니다!
다만, 외형의 문제입니다만, 색의 지정이 PERSON이나 TIME등에 밖에 되지 않고, 조금 보기 어렵습니다. 거기서 옵션으로 색을 바꾸어 보겠습니다.
#抽出したエンティティの種類に対して色を指定する
colors = {"COUNTRY":"#00cc00", "CITY":"#00cc00", "GPE_OTHER":"#00cc00","OCCASION_OTHER":"#00cc00",
"LOCATION":"#00cc00", "LOCATION_OTHER":"#00cc00","DOMESTIC_REGION":"#00cc00","PROVINCE":"#00cc00",
"STATION":"#00cc00", "CONTINENTAL_REGION":"#00cc00","THEATER":"#00cc00",
"TIME":"#adff2f","DATE":"#adff2f","DAY_OF_WEEK":"#adff2f",
"PERIOD_YEAR":"#adff2f", "PERIOD_MONTH":"#adff2f", "PERIOD_DAY":"#adff2f",
"FLORA":"#adff99","FLORA_PART":"#adff99",
"DISH":"#ffeb99","FOOD_OTHER":"#ffeb99",
"AGE":"#3385ff","N_PERSON":"#3385ff","N_EVENT":"#3385ff","N_LOCATION_OTHER":"#3385ff","RANK":"#3385ff",
"N_PRODUCT":"#3385ff","":"#3385ff","":"#3385ff","":"#3385ff","MEASUREMENT_OTHER":"#3385ff","PERCENT":"#3385ff",
"N_ORGANIZATION":"#3385ff", "ORDINAL_NUMBER":"#3385ff", "N_FACILITY":"#3385ff","SPEED":"#3385ff",
"PHONE_NUMBER":"#3385ff",
"MONEY":"#ffff00",
"COMPANY":"#99c2ff", "SCHOOL":"#99c2ff", "INTERNATIONAL_ORGANIZATION":"#99c2ff",
"GOE_OTHER":"#99c2ff", "SHOW_ORGANIZATION":"#99c2ff","CORPORATION_OTHER":"#99c2ff",
"CLOTHING":"#ff66a3",
"PRODUCT_OTHER":"#ff66a3",
"PERSON":"#c266ff",
"POSITION_VOCATION":"#ebccff",
"MUSIC":"#ff7f50", "MOVIE":"#ff7f50", "GAME":"#ff7f50", "SPORT":"#ff7f50", "BOOK":"#ff7f50",
"BROADCAST_PROGRAM":"#ff7f50",
"ANIMAL_DISEASE":"#cd5c5c"
}
options = {"colors": colors}
displacy.render(doc, style="ent", options=options, jupyter=True)
위치계의 단어는 녹색, 조직계의 단어는 파랑 등, 적당하게 설정했습니다. 개선의 여지가 많습니다.
이번은 어디까지나 실험이므로, 이것으로 좋게, 이것을 사용해 9개의 뉴스 기사를 고유 표현 추출했습니다. 결과는 이하와 같습니다.
독녀 통신
IT라이프 해킹
가전 채널
livedoor HOMME
MOVIE ENTER
Peachy
에스맥스
Sports Watch
주제 뉴스
색을 설정하면, 디폴트보다는 보기 쉬워지네요.
뉴스의 장르에 의해서도, 엔터테인먼트계는 인물이 많거나, 가제트계는 제품이나 기업의 이름이 많거나와 일목요연하네요.
중요한 정밀도이지만 장르에 따라 다소 신경이 쓰이는 단어도 있지만 일반적으로 잘 추출되어 있다고 말할 수 있습니까?
개인적으로 IT 라이프 해킹 기사에서 "야모리"가 FOOD로 분류되는 것을 걱정했습니다.
참고
GitHub: megagonlabs/ginza
개체 광장: 제4회 spaCy/GiNZA를 이용한 자연 언어 처리
주식회사 롱위트: livedoor 뉴스 코퍼스
spaCy: Visualizing the entity recognizer
spaCy: Named Entity Recognition
Reference
이 문제에 관하여(자연 언어 처리 라이브러리 GiNZA에서 고유 표현 추출 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuto16/items/1fc1f2b79195a503c681
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
GiNZA
는 자연 언어 처리 (NLP)를 수행하는 라이브러리 중 하나이며 고유 표현 추출 외에도 다양한 작업을 수행 할 수 있습니다.정확하게는
spaCy
라는 자연 언어 처리 라이브러리가 있지만, 그 일본어 처리 부분을 담당하고 있다고 느낀다.자세한 내용은 다음을 확인하십시오. 이번에는 고유 표현 추출에 대해서만 소개합니다.
GitHub: megagonlabs/ginza
제4회 spaCy/GiNZA를 이용한 자연 언어 처리
준비
먼저 spaCy
와 GiNZA
를 준비하십시오.
!pip install -U ginza
import spacy
from spacy import displacy
nlp = spacy.load('ja_ginza')
이제 spaCy
에서 spaCy
모델을로드 할 수 있으므로 처리 준비가 완료됩니다.GiNZA
를 사용하는 경우 여기에서 멈출 수 있습니다.이 경우 GitHub을 참조하십시오.
데이터 준비
그런 다음 분석 할 샘플 데이터를 준비합니다.
이번에는 Longwit가 공개 한 livedoor 뉴스 데이터를 사용합니다.
데이터는 9 개의 장르로 나뉘어진 뉴스이므로, 이번에는 그들로부터 하나씩 뉴스 텍스트를 추출하고, 9 개의 뉴스 텍스트에 대해 고유 표현 추출을 실시합니다.
이것이 텍스트 장르의 특기와 실수를 알지 못하는 것입니다.
여기에서 데이터를 다운로드하고 압축을 풉니 다.
livedoor 뉴스 코퍼스
!wget https://www.rondhuit.com/download/ldcc-20140209.tar.gz
!tar zxvf ldcc-20140209.tar.gz
고유 표현 추출
텍스트 파일의 경로를 지정하면, 그것을 읽고 구문 분석을 위해 코드를 썼다.
#テキスト読み込み
filepath = "./text/dokujo-tsushin/dokujo-tsushin-4778030.txt"
with open(filepath) as f:
s = f.read()
#ここでいろんな処理が行われる
doc = nlp(s)
#固有表現抽出の結果の描画
displacy.render(doc, style="ent", jupyter=True)
결과는 다음과 같습니다.
좋은 느낌으로 추출 할 수 있습니다!
다만, 외형의 문제입니다만, 색의 지정이 PERSON이나 TIME등에 밖에 되지 않고, 조금 보기 어렵습니다. 거기서 옵션으로 색을 바꾸어 보겠습니다.
#抽出したエンティティの種類に対して色を指定する
colors = {"COUNTRY":"#00cc00", "CITY":"#00cc00", "GPE_OTHER":"#00cc00","OCCASION_OTHER":"#00cc00",
"LOCATION":"#00cc00", "LOCATION_OTHER":"#00cc00","DOMESTIC_REGION":"#00cc00","PROVINCE":"#00cc00",
"STATION":"#00cc00", "CONTINENTAL_REGION":"#00cc00","THEATER":"#00cc00",
"TIME":"#adff2f","DATE":"#adff2f","DAY_OF_WEEK":"#adff2f",
"PERIOD_YEAR":"#adff2f", "PERIOD_MONTH":"#adff2f", "PERIOD_DAY":"#adff2f",
"FLORA":"#adff99","FLORA_PART":"#adff99",
"DISH":"#ffeb99","FOOD_OTHER":"#ffeb99",
"AGE":"#3385ff","N_PERSON":"#3385ff","N_EVENT":"#3385ff","N_LOCATION_OTHER":"#3385ff","RANK":"#3385ff",
"N_PRODUCT":"#3385ff","":"#3385ff","":"#3385ff","":"#3385ff","MEASUREMENT_OTHER":"#3385ff","PERCENT":"#3385ff",
"N_ORGANIZATION":"#3385ff", "ORDINAL_NUMBER":"#3385ff", "N_FACILITY":"#3385ff","SPEED":"#3385ff",
"PHONE_NUMBER":"#3385ff",
"MONEY":"#ffff00",
"COMPANY":"#99c2ff", "SCHOOL":"#99c2ff", "INTERNATIONAL_ORGANIZATION":"#99c2ff",
"GOE_OTHER":"#99c2ff", "SHOW_ORGANIZATION":"#99c2ff","CORPORATION_OTHER":"#99c2ff",
"CLOTHING":"#ff66a3",
"PRODUCT_OTHER":"#ff66a3",
"PERSON":"#c266ff",
"POSITION_VOCATION":"#ebccff",
"MUSIC":"#ff7f50", "MOVIE":"#ff7f50", "GAME":"#ff7f50", "SPORT":"#ff7f50", "BOOK":"#ff7f50",
"BROADCAST_PROGRAM":"#ff7f50",
"ANIMAL_DISEASE":"#cd5c5c"
}
options = {"colors": colors}
displacy.render(doc, style="ent", options=options, jupyter=True)
위치계의 단어는 녹색, 조직계의 단어는 파랑 등, 적당하게 설정했습니다. 개선의 여지가 많습니다.
이번은 어디까지나 실험이므로, 이것으로 좋게, 이것을 사용해 9개의 뉴스 기사를 고유 표현 추출했습니다. 결과는 이하와 같습니다.
독녀 통신
IT라이프 해킹
가전 채널
livedoor HOMME
MOVIE ENTER
Peachy
에스맥스
Sports Watch
주제 뉴스
색을 설정하면, 디폴트보다는 보기 쉬워지네요.
뉴스의 장르에 의해서도, 엔터테인먼트계는 인물이 많거나, 가제트계는 제품이나 기업의 이름이 많거나와 일목요연하네요.
중요한 정밀도이지만 장르에 따라 다소 신경이 쓰이는 단어도 있지만 일반적으로 잘 추출되어 있다고 말할 수 있습니까?
개인적으로 IT 라이프 해킹 기사에서 "야모리"가 FOOD로 분류되는 것을 걱정했습니다.
참고
GitHub: megagonlabs/ginza
개체 광장: 제4회 spaCy/GiNZA를 이용한 자연 언어 처리
주식회사 롱위트: livedoor 뉴스 코퍼스
spaCy: Visualizing the entity recognizer
spaCy: Named Entity Recognition
Reference
이 문제에 관하여(자연 언어 처리 라이브러리 GiNZA에서 고유 표현 추출 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuto16/items/1fc1f2b79195a503c681
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
!pip install -U ginza
import spacy
from spacy import displacy
nlp = spacy.load('ja_ginza')
그런 다음 분석 할 샘플 데이터를 준비합니다.
이번에는 Longwit가 공개 한 livedoor 뉴스 데이터를 사용합니다.
데이터는 9 개의 장르로 나뉘어진 뉴스이므로, 이번에는 그들로부터 하나씩 뉴스 텍스트를 추출하고, 9 개의 뉴스 텍스트에 대해 고유 표현 추출을 실시합니다.
이것이 텍스트 장르의 특기와 실수를 알지 못하는 것입니다.
여기에서 데이터를 다운로드하고 압축을 풉니 다.
livedoor 뉴스 코퍼스
!wget https://www.rondhuit.com/download/ldcc-20140209.tar.gz
!tar zxvf ldcc-20140209.tar.gz
고유 표현 추출
텍스트 파일의 경로를 지정하면, 그것을 읽고 구문 분석을 위해 코드를 썼다.
#テキスト読み込み
filepath = "./text/dokujo-tsushin/dokujo-tsushin-4778030.txt"
with open(filepath) as f:
s = f.read()
#ここでいろんな処理が行われる
doc = nlp(s)
#固有表現抽出の結果の描画
displacy.render(doc, style="ent", jupyter=True)
결과는 다음과 같습니다.
좋은 느낌으로 추출 할 수 있습니다!
다만, 외형의 문제입니다만, 색의 지정이 PERSON이나 TIME등에 밖에 되지 않고, 조금 보기 어렵습니다. 거기서 옵션으로 색을 바꾸어 보겠습니다.
#抽出したエンティティの種類に対して色を指定する
colors = {"COUNTRY":"#00cc00", "CITY":"#00cc00", "GPE_OTHER":"#00cc00","OCCASION_OTHER":"#00cc00",
"LOCATION":"#00cc00", "LOCATION_OTHER":"#00cc00","DOMESTIC_REGION":"#00cc00","PROVINCE":"#00cc00",
"STATION":"#00cc00", "CONTINENTAL_REGION":"#00cc00","THEATER":"#00cc00",
"TIME":"#adff2f","DATE":"#adff2f","DAY_OF_WEEK":"#adff2f",
"PERIOD_YEAR":"#adff2f", "PERIOD_MONTH":"#adff2f", "PERIOD_DAY":"#adff2f",
"FLORA":"#adff99","FLORA_PART":"#adff99",
"DISH":"#ffeb99","FOOD_OTHER":"#ffeb99",
"AGE":"#3385ff","N_PERSON":"#3385ff","N_EVENT":"#3385ff","N_LOCATION_OTHER":"#3385ff","RANK":"#3385ff",
"N_PRODUCT":"#3385ff","":"#3385ff","":"#3385ff","":"#3385ff","MEASUREMENT_OTHER":"#3385ff","PERCENT":"#3385ff",
"N_ORGANIZATION":"#3385ff", "ORDINAL_NUMBER":"#3385ff", "N_FACILITY":"#3385ff","SPEED":"#3385ff",
"PHONE_NUMBER":"#3385ff",
"MONEY":"#ffff00",
"COMPANY":"#99c2ff", "SCHOOL":"#99c2ff", "INTERNATIONAL_ORGANIZATION":"#99c2ff",
"GOE_OTHER":"#99c2ff", "SHOW_ORGANIZATION":"#99c2ff","CORPORATION_OTHER":"#99c2ff",
"CLOTHING":"#ff66a3",
"PRODUCT_OTHER":"#ff66a3",
"PERSON":"#c266ff",
"POSITION_VOCATION":"#ebccff",
"MUSIC":"#ff7f50", "MOVIE":"#ff7f50", "GAME":"#ff7f50", "SPORT":"#ff7f50", "BOOK":"#ff7f50",
"BROADCAST_PROGRAM":"#ff7f50",
"ANIMAL_DISEASE":"#cd5c5c"
}
options = {"colors": colors}
displacy.render(doc, style="ent", options=options, jupyter=True)
위치계의 단어는 녹색, 조직계의 단어는 파랑 등, 적당하게 설정했습니다. 개선의 여지가 많습니다.
이번은 어디까지나 실험이므로, 이것으로 좋게, 이것을 사용해 9개의 뉴스 기사를 고유 표현 추출했습니다. 결과는 이하와 같습니다.
독녀 통신
IT라이프 해킹
가전 채널
livedoor HOMME
MOVIE ENTER
Peachy
에스맥스
Sports Watch
주제 뉴스
색을 설정하면, 디폴트보다는 보기 쉬워지네요.
뉴스의 장르에 의해서도, 엔터테인먼트계는 인물이 많거나, 가제트계는 제품이나 기업의 이름이 많거나와 일목요연하네요.
중요한 정밀도이지만 장르에 따라 다소 신경이 쓰이는 단어도 있지만 일반적으로 잘 추출되어 있다고 말할 수 있습니까?
개인적으로 IT 라이프 해킹 기사에서 "야모리"가 FOOD로 분류되는 것을 걱정했습니다.
참고
GitHub: megagonlabs/ginza
개체 광장: 제4회 spaCy/GiNZA를 이용한 자연 언어 처리
주식회사 롱위트: livedoor 뉴스 코퍼스
spaCy: Visualizing the entity recognizer
spaCy: Named Entity Recognition
Reference
이 문제에 관하여(자연 언어 처리 라이브러리 GiNZA에서 고유 표현 추출 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuto16/items/1fc1f2b79195a503c681
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#テキスト読み込み
filepath = "./text/dokujo-tsushin/dokujo-tsushin-4778030.txt"
with open(filepath) as f:
s = f.read()
#ここでいろんな処理が行われる
doc = nlp(s)
#固有表現抽出の結果の描画
displacy.render(doc, style="ent", jupyter=True)
#抽出したエンティティの種類に対して色を指定する
colors = {"COUNTRY":"#00cc00", "CITY":"#00cc00", "GPE_OTHER":"#00cc00","OCCASION_OTHER":"#00cc00",
"LOCATION":"#00cc00", "LOCATION_OTHER":"#00cc00","DOMESTIC_REGION":"#00cc00","PROVINCE":"#00cc00",
"STATION":"#00cc00", "CONTINENTAL_REGION":"#00cc00","THEATER":"#00cc00",
"TIME":"#adff2f","DATE":"#adff2f","DAY_OF_WEEK":"#adff2f",
"PERIOD_YEAR":"#adff2f", "PERIOD_MONTH":"#adff2f", "PERIOD_DAY":"#adff2f",
"FLORA":"#adff99","FLORA_PART":"#adff99",
"DISH":"#ffeb99","FOOD_OTHER":"#ffeb99",
"AGE":"#3385ff","N_PERSON":"#3385ff","N_EVENT":"#3385ff","N_LOCATION_OTHER":"#3385ff","RANK":"#3385ff",
"N_PRODUCT":"#3385ff","":"#3385ff","":"#3385ff","":"#3385ff","MEASUREMENT_OTHER":"#3385ff","PERCENT":"#3385ff",
"N_ORGANIZATION":"#3385ff", "ORDINAL_NUMBER":"#3385ff", "N_FACILITY":"#3385ff","SPEED":"#3385ff",
"PHONE_NUMBER":"#3385ff",
"MONEY":"#ffff00",
"COMPANY":"#99c2ff", "SCHOOL":"#99c2ff", "INTERNATIONAL_ORGANIZATION":"#99c2ff",
"GOE_OTHER":"#99c2ff", "SHOW_ORGANIZATION":"#99c2ff","CORPORATION_OTHER":"#99c2ff",
"CLOTHING":"#ff66a3",
"PRODUCT_OTHER":"#ff66a3",
"PERSON":"#c266ff",
"POSITION_VOCATION":"#ebccff",
"MUSIC":"#ff7f50", "MOVIE":"#ff7f50", "GAME":"#ff7f50", "SPORT":"#ff7f50", "BOOK":"#ff7f50",
"BROADCAST_PROGRAM":"#ff7f50",
"ANIMAL_DISEASE":"#cd5c5c"
}
options = {"colors": colors}
displacy.render(doc, style="ent", options=options, jupyter=True)
GitHub: megagonlabs/ginza
개체 광장: 제4회 spaCy/GiNZA를 이용한 자연 언어 처리
주식회사 롱위트: livedoor 뉴스 코퍼스
spaCy: Visualizing the entity recognizer
spaCy: Named Entity Recognition
Reference
이 문제에 관하여(자연 언어 처리 라이브러리 GiNZA에서 고유 표현 추출 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuto16/items/1fc1f2b79195a503c681텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)