뉴스 기사에서 가장 빠른 키워드 식별 방법

TF-IDF with Wikipedia (Python 버전)
기사를 훑어 보거나 스캔할 때 키워드는 기사의 관련 주제에 대한 기본적인 이해를 돕는 가장 중요한 지표입니다. 컴퓨터에서 사람이 하는 것과 똑같은 일 을 하게 하려면 기사에서 키워드를 얻는 방법을 가르쳐야하고 다른 키워드보다 더 중요한 키워드를 결정해야합니다 .

가장 쉬운 방법은 미리 정의된 목록에서 “키워드”를 찾는 것입니다. 그리고 목록은 가장 큰 무료 온라인 백과사전인 Wikipedia에서 추출할 수 있습니다.

TF-IDF(용어 빈도 – 역문서 빈도)는 다른 기사에서 특정 용어의 부족을 고려하여 대상 기사의 특정 용어 의 빈도를 계산하는 채점 방법입니다 .

TF-IDF의 의미는 다음과 같이 간단히 설명 할 수 있습니다.
– TF : 용어의 빈도가 높을수록 점수가 높습니다.
– IDF : 용어가 더 일반적 일수록 점수가 낮습니다.

위키피디아

여기에서 Wikipedia의 덤프를 다운로드하고 Wikipedia의 로컬 데이터베이스를 만듭니다.  Robert는 전체 Wikipedia를 로컬 데이터베이스로 가져 오기 위한 지침은 여기를 참조하십시오.

다음 단계는 Wikipedia 백과사전은 모든 단일 용어를 설명하기 때문에 각 Wikipedia의 기사 제목에서 키워드 목록을 만드는 것입니다. “World War I”, “WW1” 또는 “World War One”와 같은 위키피디아에서 다양한 표현 방식이 포착됩니다.

이제 여기에 키워드 목록 (중국어 버전)이 있으며 간단한 스크립트를 사용하여 기사에서 키워드를 추출 할 수 있습니다.

keyword_article = []

for k in keywords:

k = re.sub(“\r\n”,””,k)

if k in articlekeyword_article.append(k)

그러나 추출된 키워드 목록에 “World”, “War”, “World War”와 같은 중복 키워드가 있을 수 있기 때문에 이 단계의 끝은 아닙니다. 중복된 키워드는 필터링되어 제외됩니다.

keyword_overlap = []
for g in keyword_article:
for h in keyword_article:
if g != h:
if h in g:
keyword_overlap.append(h)
wiki_terms = list(set(keyword_article)-set(keyword_overlap))

다음 단계는 기사에서 추출한 키워드의 중요성을 확인하는 단계입니다.

TF-IDF 점수

 

 

TF-IDF (용어 빈도 – 역문서 빈도)는 다른 기사에서 특정 용어의 부족을 고려하여 대상 기사의 특정 용어 빈도를 계산하는 채점 방법입니다 .

TF-IDF의 의미는 다음과 같이 간단히 설명 할 수 있습니다.

TF : 용어의 빈도가 높을수록 점수가 높습니다.

IDF : 용어가 더 일반적 일수록 점수가 낮습니다.

예를 들어 보겠습니다. 우리는 2016년 뉴욕타임즈에서 2016년도 가장 많이 읽은 이야기인 “Why You Will Marry the Wrong Person”를 선택합니다.  “marriage”의 15개에 비해 기사에서 “the”는 96개가 있습니다. “the”는 모든 기사에서 매우 흔하기 때문에 IDF 점수는 “marriage”에 비해 매우 낮습니다. 이 예에서 TD-IDF 점수는 중요한 키워드를 식별하는 데 도움이 됩니다.

기사에서 TF 계산하기

term_no = []
term_sum = 0
wordcount = {}
tfidf = {}
for i in xrange(len(wiki_terms)):
term = articles.count(wiki_terms[i])
term_no.append(term)
for i in term_no:
term_sum = term_sum + i
for i in xrange(len(wiki_terms)):
tf = Decimal(term_no[i])/Decimal(term_sum)
wordcount[wiki_terms[i]]=tf

로컬 Wikipedia 데이터베이스에서 IDF 계산

for k in wiki_terms:
x2.execute(“select key_idf from key_cn where key_term = %s”,(k))
idf = x2.fetchone()
if idf:
tfidf_value = float(wordcount[k])* idf[0]
if tfidf_value > 0.1:
tfidf[k] = tfidf_value
#if the keywords appear in header, it is important.
if k in articles_header:
tfidf[k] = 1

여기까지가 1차적인 처리 방법입니다. 이야기를 서로 연결하고 싶을 때, tf-idf 자체는 각 기사의 유사성을 계산하지 않습니다. 관련 기사와 추상화된 키워드를 연결하는 방법은 별도로 살펴 보겠습니다.

깃허브
https://github.com/adamchinkc/tfidf_wiki

원문
https://medium.com/…/the-fastest-way-to-identify-keywords-i…

Tags:

td-idf

자연어

NLP

키워드추출

빈도수

위키피디아

뉴스키워드