Analizar texto sobre ciencia de datos
4744 단어 datascience
과제: 데이터 과학에 대한 텍스트 분석
이 예에서는 기존 데이터 과학 프로세스의 모든 단계를 다루는 간단한 연습을 해보겠습니다. 코드를 작성할 필요가 없으며 아래 셀을 클릭하여 실행하고 결과를 관찰할 수 있습니다. 도전 과제로, 다른 데이터로 이 코드를 시도해 보는 것이 좋습니다.
목표
이번 시간에는 데이터 과학과 관련된 다양한 개념에 대해 논의했습니다. 텍스트 마이닝을 수행하여 더 많은 관련 개념을 발견해 봅시다. 데이터 사이언스에 대한 텍스트로 시작하여 키워드를 추출한 후 결과를 시각화해 보도록 하겠습니다.
텍스트로 Wikipedia의 데이터 과학 페이지를 사용하겠습니다.
url = 'https://en.wikipedia.org/wiki/Data_science'
1단계: 데이터 가져오기
모든 데이터 과학 프로세스의 첫 번째 단계는 데이터를 가져오는 것입니다. 이를 위해 requests
라이브러리를 사용합니다.
import requests
text = requests.get(url).content.decode('utf-8')
print(text[:1000])
2단계: 데이터 변환
다음 단계는 데이터를 처리에 적합한 형식으로 변환하는 것입니다. 우리의 경우 페이지에서 HTML 소스 코드를 다운로드했으며 이를 일반 텍스트로 변환해야 합니다.
이를 수행할 수 있는 방법에는 여러 가지가 있습니다. Python에서 가장 간단한 내장HTMLParser 개체를 사용합니다. HTMLParser
클래스를 하위 클래스로 분류하고 <script>
및 <style>
태그를 제외한 HTML 태그 내의 모든 텍스트를 수집하는 코드를 정의해야 합니다.
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
script = False
res = ""
def handle_starttag(self, tag, attrs):
if tag.lower() in ["script","style"]:
self.script = True
def handle_endtag(self, tag):
if tag.lower() in ["script","style"]:
self.script = False
def handle_data(self, data):
if str.strip(data)=="" or self.script:
return
self.res += ' '+data.replace('[ edit ]','')
parser = MyHTMLParser()
parser.feed(text)
text = parser.res
print(text[:1000])
3단계: 인사이트 얻기
가장 중요한 단계는 데이터를 통찰력을 얻을 수 있는 형식으로 바꾸는 것입니다. 우리의 경우 텍스트에서 키워드를 추출하고 어떤 키워드가 더 의미가 있는지 확인하려고 합니다.
키워드 추출을 위해 Python 라이브러리RAKE를 사용합니다. 먼저 이 라이브러리가 없는 경우를 대비하여 설치해 보겠습니다.
import sys
!{sys.executable} -m pip install nlp_rake
주요 기능은 Rake
개체에서 사용할 수 있으며 일부 매개 변수를 사용하여 사용자 지정할 수 있습니다. 이 경우에는 키워드의 최소 길이를 5자로, 문서에서 키워드의 최소 빈도를 3으로, 키워드의 최대 단어 수를 2로 설정합니다. 자유롭게 다른 값을 가지고 놀면서 관찰하십시오. 결과.
import nlp_rake
extractor = nlp_rake.Rake(max_words=2,min_freq=3,min_chars=5)
res = extractor.apply(text)
res
관련 중요도와 함께 목록 용어를 얻었습니다. 보시다시피 기계 학습 및 빅 데이터와 같은 가장 관련성이 높은 분야가 목록의 최상위 위치에 있습니다.
4단계: 결과 시각화
사람들은 시각적인 형태로 데이터를 가장 잘 해석할 수 있습니다. 따라서 통찰력을 얻기 위해 데이터를 시각화하는 것이 종종 의미가 있습니다. Python에서 matplotlib
라이브러리를 사용하여 관련성과 함께 키워드의 간단한 분포를 그릴 수 있습니다.
import matplotlib.pyplot as plt
def plot(pair_list):
k,v = zip(*pair_list)
plt.bar(range(len(k)),v)
plt.xticks(range(len(k)),k,rotation='vertical')
plt.show()
plot(res)
그러나 Word Cloud를 사용하여 단어 빈도를 시각화하는 더 좋은 방법이 있습니다. 키워드 목록에서 단어 구름을 구성하려면 다른 라이브러리를 설치해야 합니다.
!{sys.executable} -m pip install wordcloud
WordCloud
개체는 원본 텍스트 또는 빈도와 함께 미리 계산된 단어 목록을 가져오는 역할을 하며 반환 및 이미지는 matplotlib
를 사용하여 표시할 수 있습니다.
from wordcloud import WordCloud
import matplotlib.pyplot as plt
wc = WordCloud(background_color='white',width=800,height=600)
plt.figure(figsize=(15,7))
plt.imshow(wc.generate_from_frequencies({ k:v for k,v in res }))
원본 텍스트를 WordCloud
에 전달할 수도 있습니다. 비슷한 결과를 얻을 수 있는지 봅시다.
plt.figure(figsize=(15,7))
plt.imshow(wc.generate(text))
wc.generate(text).to_file('images/ds_wordcloud.png')
이제 단어 구름이 더 인상적으로 보이지만 노이즈도 많이 포함되어 있음을 알 수 있습니다(예: Retrieved on
와 같이 관련 없는 단어). 또한 데이터 과학자 또는 컴퓨터 과학과 같이 두 단어로 구성된 키워드가 적습니다. 이것은 RAKE 알고리즘이 텍스트에서 좋은 키워드를 선택하는 데 훨씬 더 잘 작동하기 때문입니다. 이 예는 데이터 전처리 및 정리의 중요성을 보여줍니다. 마지막에 명확한 그림이 있으면 더 나은 결정을 내릴 수 있기 때문입니다.
이 연습에서 우리는 Wikipedia 텍스트에서 키워드와 단어 구름의 형태로 일부 의미를 추출하는 간단한 과정을 거쳤습니다. 이 예제는 매우 간단하지만 데이터 수집에서 시작하여 시각화에 이르기까지 데이터로 작업할 때 데이터 과학자가 수행하는 모든 일반적인 단계를 잘 보여줍니다.
이 과정에서는 이러한 모든 단계에 대해 자세히 설명합니다.
Reference
이 문제에 관하여(Analizar texto sobre ciencia de datos), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/achalmaedison/ejemplo-01-55cc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
url = 'https://en.wikipedia.org/wiki/Data_science'
import requests
text = requests.get(url).content.decode('utf-8')
print(text[:1000])
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
script = False
res = ""
def handle_starttag(self, tag, attrs):
if tag.lower() in ["script","style"]:
self.script = True
def handle_endtag(self, tag):
if tag.lower() in ["script","style"]:
self.script = False
def handle_data(self, data):
if str.strip(data)=="" or self.script:
return
self.res += ' '+data.replace('[ edit ]','')
parser = MyHTMLParser()
parser.feed(text)
text = parser.res
print(text[:1000])
import sys
!{sys.executable} -m pip install nlp_rake
import nlp_rake
extractor = nlp_rake.Rake(max_words=2,min_freq=3,min_chars=5)
res = extractor.apply(text)
res
import matplotlib.pyplot as plt
def plot(pair_list):
k,v = zip(*pair_list)
plt.bar(range(len(k)),v)
plt.xticks(range(len(k)),k,rotation='vertical')
plt.show()
plot(res)
!{sys.executable} -m pip install wordcloud
from wordcloud import WordCloud
import matplotlib.pyplot as plt
wc = WordCloud(background_color='white',width=800,height=600)
plt.figure(figsize=(15,7))
plt.imshow(wc.generate_from_frequencies({ k:v for k,v in res }))
plt.figure(figsize=(15,7))
plt.imshow(wc.generate(text))
wc.generate(text).to_file('images/ds_wordcloud.png')
Reference
이 문제에 관하여(Analizar texto sobre ciencia de datos), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/achalmaedison/ejemplo-01-55cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)