중화사전망 - 자전 검색 - 파이썬을 사용하여 여론 시계열을 시각화하는 방법
파이썬을 사용하여 여론 시계열을 시각화하는 방법
통점
당신은 냄비 가게 체인의 지역 매니저입니다. 당신은 식당에 대한 고객의 평가를 매우 중요하게 생각합니다. 옛날 옛적에, 당신을 괴롭히는 것은 고객이 댓글을 쓰는 것을 좋아하지 않는다는 것이다. 요즘 식당이 불타서 지점이 많아지고 댓글을 쓰는 고객이 많아지고 있어 새로운 고통이 찾아왔습니다. 댓글이 너무 많아서 다 볼 수가 없습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 음식명언)
나에게서, 당신은 사용하기 쉬운 감정 분석 자동화 도구에 대해 배웠고, 갑자기 서광이 보인다고 느꼈다. (윌리엄 셰익스피어, 템페스트, 희망명언)
당신은 어떤 유명 댓글 사이트에서 자신의 분기 페이지를 찾아 조수에게 댓글과 발표 시간 데이터를 내려달라고 합니다. 조수는 파충류를 사용하지 않기 때문에 웹 페이지의 댓글을 복사하여 Excel 에 붙여 넣을 수 있습니다. 퇴근할 때 겨우 27 이에요. (여기서 사용하는 것은 실제 요약 데이터입니다. 댓글을 달고 있는 상가에 번거로움을 피하기 위해 식당 이름을' A 식당' 으로 바꿨다. 특별히 설명하다. ) 을 참조하십시오
다행히도, 당신은 단지 실험을하고 싶습니다. 너는 내가 이전에 소개한 중국어 정보 감정 분석 도구를 이용하여 각 평론의 감정값을 차례로 얻어낸다. 결과가 처음 나왔을 때, 당신은 매우 흥분하여 여론 분석의 궁극적인 무기를 찾았다고 느꼈다.
하지만 좋은 시간은 항상 짧다. 너는 곧 각 평론에 대해 프로그램을 단독으로 실행하고 기계로 분석하는 것이 정말 보기 좋다는 것을 알게 될 것이다.
우리는 무엇을 할까요
순서
자연히 방법이 있다. 우리는 대출을 사용할 수도 있고, 대출을 사용하지 않을 수도 있습니다. 어떻게 파이썬과 기계학습을 통해 결정을 내릴 수 있을까요? 이 문서에서 설명하는 데이터 프레임워크는 한 번에 여러 개의 데이터를 처리하여 효율성을 높입니다.
하지만 그것으로는 충분하지 않습니다. 감정 분석의 결과를 시계열에 시각화할 수도 있습니다. 그래서 당신은 한눈에 추세를 볼 수 있습니다-최근 며칠 동안 사람들이 식당에 더 만족하고 있습니까, 아니면 점점 더 불만을 느끼고 있습니까?
우리 인류가 가장 잘 처리하는 것은 이미지이다. 기나긴 진화사가 우리로 하여금 빠르고 정확하게 이미지를 처리할 수 있는 능력을 끊임없이 향상시키도록 강요했기 때문이다. 그렇지 않으면 환경에 의해 도태될 것이다. 그래서' 한 그림이 천언보다 낫다' 는 말이 있다.
준비하다
먼저 Anaconda 패키지를 설치해야 합니다. 자세한 절차 절차는 문장 "파이썬을 사용하여 단어 구름을 만드는 방법" 을 참조하십시오.
도우미가 하드 만든 Excel 파일 restaurant-comments.xlsx 는 여기에서 다운로드하십시오.
Excel 에서 엽니다. 모든 것이 정상일 경우 파일을 작업 디렉토리 프레젠테이션으로 이동하십시오.
이 예는 중국어 평론을 분석해야 하기 때문에 사용하는 패키지는 SnowNLP 입니다. 감정 분석의 기본 응용 방법은 Python 으로 감정 분석을 하는 방법을 참고하세요. 을 클릭합니다.
시스템의 "터미널" (macOS, Linux) 또는 "명령 프롬프트" (Windows) 로 이동하여 작업 디렉토리 데모로 이동한 후 다음 명령을 실행합니다.
Snownlp 를 설치합니다
Pip 설치 ggplot
운영 환경이 구성되었습니다.
터미널 또는 명령 프롬프트에서 다음을 입력합니다.
Jupyter 노트북
만약 Jupyter Notebook 이 정상적으로 작동한다면, 우리는 지금 코드 작성을 시작할 수 있다.
암호
Jupyter Notebook 에 time-series 라는 새로운 Python 2 노트북을 만들었습니다.
먼저 데이터 프레임 분석 도구인 Pandas 를 소개합니다. 쉽게 호출하기 위해 PD 라고 합니다.
판다를 PD 로 수입하다
그런 다음 Excel 데이터 파일을 읽습니다.
Df = pd.read_excel ("식당-리뷰. xlsx")
읽기 내용이 완전한지 봅시다.
Df.head ()
결과는 다음과 같습니다.
여기 시간표에 주의하세요. Excel 파일의 시간 형식이 날짜와 시간을 포함하여 여기와 같다면 팬더는 시간 형식을 인식할 수 있도록 현명하게 도와주고 용감하게 앞으로 나아가는 데 도움이 될 것이다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 시간명언)
반면에, "20 17-04-20" 과 같이 정확한 날짜만 얻을 수 있다면 판다는 그것을 하나의 문자열로만 취급하고 문자열 데이터는 후속 시계열 분석에 사용할 수 없습니다. 해결 방법은 여기에 다음 두 줄의 코드를 추가하는 것입니다.
Dateutil 에서 파서를 가져옵니다
Df ["date"] = df.date.apply (parser.parse)
이런 식으로 올바른 시간 데이터를 얻을 수 있습니다.
데이터가 완전하다는 것을 확인한 후에 우리는 감정 분석을 해야 한다. 첫 번째 줄의 주석으로 작은 실험을 해봅시다.
Text = df.comments.iloc[0]
그런 다음 SnowNLP 감정 분석 도구를 호출합니다.
Snownlp 에서 SnowNLP 가져오기
S = SnowNLP (텍스트)
SnowNLP 에 대한 분석 결과를 표시합니다.
미국의 감정
결과는 다음과 같습니다.
0.633 1975099099649
감정 분석 값은 정확하게 계산할 수 있다. 이를 바탕으로 모든 의견을 일괄 처리하는 함수를 정의해야 합니다.
Def get _ 정서 _cn (텍스트):
S = SnowNLP(text) 는 s 의 감정을 반환합니다
그런 다음 Python 의 강력한 apply 문을 사용하여 모든 의견을 한 번에 처리하고 결과 감정 값을 데이터 상자에 열로 저장합니다. 이를 감정이라고 합니다.
Df[ "정서" ]= df. comments. apply(get _ 정서 _cn)
감정 분석의 결과를 살펴 보겠습니다.
Df.head ()
이미 새로운 열 정서가 생성되었다. 앞서 언급했듯이 SnowNLP 의 결과 범위는 0 에서 1 사이이며 감정 분석 결과가 양수일 가능성을 나타냅니다. 앞의 몇 가지 데이터를 관찰함으로써, 우리는 리뷰 사이트에서 이 지점에 대한 고객의 평가가 일반적으로 긍정적이며, 어떤 평가는 매우 긍정적이라는 것을 발견했다.
그러나 소량의 데이터에 대한 관찰은 우리의 결론에 편차를 초래할 수 있다. 모든 감정 분석 결과를 평균해 봅시다. Mean () 함수만 사용하면 됩니다.
Df. 정서. 평균 ()
결과는 다음과 같습니다.
0.71140153185711
그 결과 0.7 이 넘었고, 이 가게에 대한 고객의 전반적인 태도는 긍정적이었다.
중간 값을 살펴 보겠습니다. 사용되는 함수는 median () 입니다.
Df. opinion. median ()
결과는 다음과 같습니다.
0.9563 139038622388
우리는 중앙값이 평균보다 높을 뿐만 아니라 거의 1 (완전 양수) 에 가까운 흥미로운 현상을 발견했다.
이것은 절대다수의 논평이 압도적으로 만족한다는 것을 의미한다. 그러나 평균을 크게 낮추는 몇 가지 예외가 있습니다.
감정의 시계열 시각화 기능을 이용하여 이러한 이상이 언제 발생하는지, 그 값이 얼마나 낮은지 시각화해 봅시다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 감정명언)
우리는 ggplot 그리기 키트를 사용해야 한다. 이 키트는 처음에는 R 언어로만 제공되었으며, 이는 다른 데이터 분석 도구의 사용자들이 군침이 도는 것을 부러워하게 했다. 다행히도, 그것은 곧 파이썬 플랫폼으로 이식되었다.
Jupyter 노트북에 이미지를 직접 표시할 수 있도록 ggplot 에서 그리기 기능을 도입했습니다.
Ggplot 가져온% pylab inlinefrom
여기에 몇 가지 경고 메시지가 있을 수 있습니다. 괜찮아, 무시하면 돼.
차트를 그려 봅시다. 여기에 다음 줄을 입력할 수 있습니다.
Ggplot(aes(x= "날짜", y= "감정"), data = df)+geom _ point ()+geom _ line (colot
Ggplot 의 드로잉 문법이 얼마나 간결하고 인간적인지 알 수 있습니다. Python 에게 사용할 데이터 상자, 가로축으로 사용할 열, 세로 축으로 사용할 열, 점을 먼저 그린 다음 연결하면 선의 색상을 지정할 수 있습니다. 그렇다면 X 축의 날짜를 어떤 형식으로 표시하시겠습니까? 모든 매개변수 설정은 자연어와 유사하며 직관적이고 이해하기 쉽습니다.
실행 후 결과 다이어그램을 볼 수 있습니다.
그림에서 우리는 많은 긍정적인 논평의 감정 분석치가 매우 높다는 것을 발견했다. 동시에 우리는 그 수치가 매우 낮은 점들을 분명히 발견했다. 해당 의견의 감정 분석 값은 0 에 가깝다. 이 논평들은 Python 에 의해 거의 긍정적인 느낌이 없는 것으로 판단된다.
시간상으로 최근 며칠 동안 거의 며칠마다 심각한 부정적인 평가가 있을 것이다.
매니저로서 너는 바늘방석에 앉은 것 같다. 나는 가능한 한 빨리 무슨 일이 일어났는지 알고 싶다. 데이터 상자나 Excel 파일에서 감정 값이 가장 낮은 댓글을 찾을 필요가 없습니다. Python 데이터 상자 Pandas 는 당신에게 아주 좋은 정렬 기능을 제공합니다. 모든 댓글 중에서 감정 분석치가 가장 낮은 것을 찾고자 한다면 이렇게 할 수 있습니다.
Df.sort([' 정서' ])[: 1]
결과는 다음과 같습니다.
감정 분석의 결과는 거의 0 이다! 그러나 여기에 표시된 주석 정보는 불완전합니다. 우리는 논평을 전체적으로 인쇄해야 한다.
Print(df. sort([' perspective ']). Iloc[0] 입니다. 의견)
의견의 전체 정보는 다음과 같습니다.
이번에는 발렌타인데이인데, 전에는 발렌타인데이에 나간 적이 없어요. 남자 친구가 없는 게 아니라 사람이 많다고 느껴서 일부러 엇갈렸다. 이번에는 정말 A 식당에 먹고 싶어서 그날도 나왔어요. 오후 4 시부터 줄을 서는 사람이 100 명을 넘는 것을 보았다. 집에서 한 시간 동안 운전하려면, 나는 2 시간 전에 인터넷에 줄을 서서 거의 6 시가 다 되어간다. 그곳에 도착했을 때, 나는 번호 앞에 30 여 점 밖에 없는 것을 보았다. 나는 괜찮다고 생각했다. 나는 늦게 먹을 수 있다. 생각지도 못했어요. 비극이에요. 우리가 그곳에 도착했을 때, 우리는 대기구역에 앉았는데, 그것은 대략 10: 20 이었다. 중간에 여러 번 떠나고 싶다. 하하, 아이고, 아침 9 시에 먹어요. 종업원은 이전에 주도면밀한 느낌이 들지 않았지만, 혼자서 몇 테이블을 관리하는 것은 긍정적이다. 오늘의 휴가는 정말 좋다. 그래서 대부분 제가 직접 심부름을 해서 종업원에게 새우를 올려달라고 했어요. 너무 많이 가져가지 않았어요. 그리고 환경감각은 위생적으로 괜찮았어요. 좀 시끄러웠어요. 맛은 여전히 예전과 같았어요. 하지만 A 레스토랑에서 가장 인간적인 건 2 시간 넘게 기다려서 할인카드를 보내줬어요. 매번 쓸 수 있을 거예요. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 음식명언) 이런 느낌은 그래도 좋다. 식당이지만 평소보다 더 인간적이다.
독서를 통해 이 고객이 정말 나쁜 경험을 했다는 것을 알 수 있습니다. 이렇게 오래 기다리면서 그는' 비극' 이라는 단어를 사용했습니다. 또 서비스가 주도면밀하지 않아 환경이 시끄럽다. 바로 이 단어들의 출현으로 분석 결과가 매우 낮다.
다행히 고객들은 모두 합리적이어서 지점의 인간화 관행에 대해 긍정적인 평가를 했다.
이 예에서 볼 수 있듯이, 감정 분석은 많은 콘텐츠를 자동으로 처리하는 데 도움이 될 수 있지만 전적으로 의존할 수는 없습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 감정명언)
자연어 분석은 강한 감정을 표현하는 키워드뿐만 아니라 표현 방식, 어경 등 다양한 요소도 고려해야 한다. 이러한 내용은 자연어 처리 분야의 연구의 최전선이다. 우리는 가능한 한 빨리 과학자의 연구 성과에 적용해 감정 분석의 정확성을 높이기를 기대한다.
그러나 현재 감정 분석의 자동화 처리가 정확하지 않더라도 문제가 있을 수 있는 예외를 신속하게 찾는 데 도움이 될 수 있습니다. 효율성면에서 수동 처리보다 훨씬 높습니다.
이 평론을 보고 나니 너는 안도의 한숨을 내쉬었다. 경험과 교훈을 총화한 후에, 너는 인간화 서비스를 끝까지 진행하기로 결정했다. 또한 사용자의 대기 시간 데이터를 수집하여 데이터 분석을 통해 식사를 기다리는 고객에게 보다 합리적인 대기 시간 기대치를 제공할 수 있다고 생각합니다. 이렇게 하면 고객이 늦게까지 기다리는 것을 막을 수 있다.
축하해, 매니저! 데이터 인텔리전스 시대에, 당신은 올바른 방향으로 가고 있습니다.
다음으로, 다음 부정적인 논평을 주의 깊게 읽어야 한다. ...
토론
감정 분석과 시계열 시각화를 제외하고, 당신은 중국어 평론 정보를 어떻게 발굴할 것이라고 생각합니까? 댓글 사이트 외에 어떤 여론 분석의 데이터 출처를 알고 있습니까? 여러분의 메시지를 여러분과 함께 나누신 것을 환영합니다. 모두 함께 교류하여 토론하세요.
만약 당신이 내 문장 에 관심 이 있다면, 칭찬 을 위챗 관심 을 받 고 내 위챗 공식 계좌' nkwangshuyi' 를 받 아 주세요.
옆에 여론분석 연구를 하는 친구가 있다면, 이 문장 전달해 주고, 함께 공부하여 향상해 주시기 바랍니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 공부명언)