การวิเคราะห์ความเชื่อมั่นของ Twitter ใน Python [ปิด]


87

ฉันกำลังมองหาการใช้งานโอเพนซอร์สโดยเฉพาะอย่างยิ่งใน python ของTextual Sentiment Analysis ( http://en.wikipedia.org/wiki/Sentiment_analysis ) มีใครคุ้นเคยกับการใช้งานโอเพนซอร์สที่ฉันสามารถใช้ได้ไหม

ฉันกำลังเขียนแอปพลิเคชันที่ค้นหาทวิตเตอร์สำหรับคำค้นหาบางคำพูดว่า "youtube" และนับทวีตที่ "มีความสุข" เทียบกับทวีต "เศร้า" ฉันใช้ appengine ของ Google ดังนั้นมันจึงอยู่ใน python ฉันต้องการแยกประเภทผลการค้นหาที่ส่งคืนจาก twitter และฉันต้องการทำใน python ฉันยังไม่พบตัววิเคราะห์ความรู้สึกเช่นนี้โดยเฉพาะไม่ได้อยู่ใน python คุณคุ้นเคยกับการใช้งานโอเพนซอร์สที่ฉันสามารถใช้ได้หรือไม่? โดยเฉพาะอย่างยิ่งสิ่งนี้มีอยู่แล้วใน python แต่ถ้าไม่เป็นเช่นนั้นหวังว่าฉันจะแปลเป็น python ได้

หมายเหตุข้อความที่ฉันกำลังวิเคราะห์สั้นมากเป็นทวีต ดังนั้นลักษณนามนี้จึงเหมาะสำหรับข้อความสั้น ๆ ดังกล่าว

BTW, twitter รองรับโอเปอเรเตอร์ ":)" และ ":(" ในการค้นหาซึ่งมีจุดมุ่งหมายเพื่อทำสิ่งนี้ แต่น่าเสียดายที่การจัดหมวดหมู่ที่พวกเขาให้มานั้นไม่ค่อยดีนักดังนั้นฉันจึงคิดว่าฉันอาจลองด้วยตัวเอง .

ขอบคุณ!

BTW การสาธิตในช่วงต้นอยู่ที่นี่และรหัสที่ฉันมีอยู่ที่นี่และฉันชอบที่จะเปิดให้กับนักพัฒนาที่สนใจ

คำตอบ:


44

ด้วยแอปพลิเคชันประเภทนี้ส่วนใหญ่คุณจะต้องม้วนโค้ดของคุณเองจำนวนมากสำหรับงานการจัดประเภททางสถิติ ตามที่ Lucka แนะนำ NLTK เป็นเครื่องมือที่สมบูรณ์แบบสำหรับการปรับแต่งภาษาธรรมชาติใน Python ตราบใดที่เป้าหมายของคุณไม่รบกวนลักษณะที่ไม่ใช่เชิงพาณิชย์ของใบอนุญาต อย่างไรก็ตามฉันขอแนะนำแพ็คเกจซอฟต์แวร์อื่น ๆ สำหรับการสร้างแบบจำลอง ฉันไม่พบโมเดลแมชชีนเลิร์นนิงขั้นสูงที่แข็งแกร่งมากมายสำหรับ Python ดังนั้นฉันจะแนะนำไบนารีแบบสแตนด์อโลนที่สามารถใช้ร่วมกับมันได้อย่างง่ายดาย

คุณอาจสนใจThe Toolkit for Advanced Discriminative Modelingซึ่งสามารถเชื่อมต่อกับ Python ได้อย่างง่ายดาย สิ่งนี้ถูกใช้สำหรับการจัดหมวดหมู่งานในด้านต่างๆของการประมวลผลภาษาธรรมชาติ คุณยังมีรุ่นต่างๆให้เลือกมากมาย ฉันขอแนะนำให้เริ่มต้นด้วยการจัดประเภทเอนโทรปีสูงสุดตราบเท่าที่คุณคุ้นเคยกับการใช้ตัวจำแนก Naive Bayes แล้ว หากไม่เป็นเช่นนั้นคุณอาจต้องการตรวจสอบและเขียนโค้ดขึ้นมาเพื่อให้ได้ความเข้าใจที่ดีเกี่ยวกับการจัดประเภททางสถิติในฐานะงานแมชชีนเลิร์นนิง

กลุ่มภาษาศาสตร์เชิงคำนวณของมหาวิทยาลัยเท็กซัสออสตินได้จัดการเรียนการสอนซึ่งโครงการส่วนใหญ่ที่มาจากพวกเขาได้ใช้เครื่องมือที่ยอดเยี่ยมนี้ คุณสามารถดูหน้าหลักสูตรสำหรับภาษาศาสตร์เชิงคำนวณ IIเพื่อรับทราบวิธีการทำงานและแอปพลิเคชันก่อนหน้านี้ที่ใช้งานได้อย่างไร

เครื่องมือที่ยอดเยี่ยมอีกอย่างหนึ่งที่ทำงานในเส้นเลือดเดียวกันคือMalletตะลุมพุกความแตกต่างระหว่าง Mallet คือมีเอกสารประกอบอีกเล็กน้อยและมีโมเดลอื่น ๆ ให้เลือกเช่นแผนผังการตัดสินใจและใน Java ซึ่งในความคิดของฉันทำให้ช้าลงเล็กน้อย Wekaเป็นชุดโมเดลแมชชีนเลิร์นนิงที่แตกต่างกันทั้งหมดในแพ็คเกจขนาดใหญ่ชุดเดียวที่มีเนื้อหากราฟิกบางอย่าง แต่ส่วนใหญ่มีไว้เพื่อวัตถุประสงค์ในการเรียนการสอนและไม่ใช่สิ่งที่ฉันจะนำไปใช้ในการผลิต

ขอให้โชคดีกับงานของคุณ ส่วนที่ยากจริงๆน่าจะเป็นจำนวนของวิศวกรรมความรู้ที่ต้องใช้ล่วงหน้าเพื่อให้คุณจำแนก 'ชุดเมล็ดพันธุ์' ที่โมเดลของคุณจะเรียนรู้ จะต้องมีขนาดค่อนข้างใหญ่ขึ้นอยู่กับว่าคุณกำลังทำการจำแนกประเภทไบนารี (มีความสุขและเศร้า) หรือช่วงอารมณ์ทั้งหมด (ซึ่งจะต้องใช้มากกว่านี้) ตรวจสอบให้แน่ใจว่าได้เก็บข้อมูลที่ออกแบบมาบางส่วนไว้สำหรับการทดสอบหรือเรียกใช้การทดสอบสิบเท่าหรือลบหนึ่งรายการเพื่อให้แน่ใจว่าคุณคาดการณ์ได้ดีจริงก่อนที่จะนำออก และที่สำคัญที่สุดขอให้สนุก! นี่เป็นส่วนที่ดีที่สุดของ NLP และ AI ในความคิดของฉัน


ขอบคุณ. ฉันทำสิ่งนี้เฉพาะตอนกลางคืนดังนั้น ... ต้องใช้เวลาพอสมควร แต่ฉันจะโพสต์อัปเดตเมื่อฉันมีบางอย่างพร้อม
Ran

7
รหัส NLTK มีอยู่ใน Apache License 2.0 ตามnltk.org/faq
amit

1
ทำไมคุณถึงบอกว่า Weka มีจุดประสงค์เพื่อการเรียนการสอน? ไม่ได้เป็นส่วนหนึ่งของชุดโปรแกรม pentaho BI หรือไม่? และ pentaho ให้บริการแก่องค์กรต่างๆ
Swapnil

77

ขอให้โชคดี

ความเชื่อมั่นเป็นบริบทอย่างมากและวัฒนธรรมการทวีตทำให้ปัญหาแย่ลงเพราะคุณไม่ได้รับบริบทสำหรับทวีตส่วนใหญ่ ประเด็นทั้งหมดของทวิตเตอร์คือคุณสามารถใช้ประโยชน์จากบริบท "โลกแห่งความจริง" ที่แชร์จำนวนมหาศาลเพื่อบรรจุการสื่อสารที่มีความหมายในข้อความสั้น ๆ

ถ้าพวกเขาบอกว่าวิดีโอไม่ดีหมายความว่าไม่ดีหรือไม่ดี ?

วันหนึ่งศาสตราจารย์ด้านภาษาศาสตร์กำลังบรรยายให้ชั้นเรียนของเธอ "ในภาษาอังกฤษ" เธอกล่าว "เชิงลบสองเท่าก่อให้เกิดผลบวกในบางภาษาเช่นรัสเซียค่าลบสองเท่ายังคงเป็นลบอย่างไรก็ตามไม่มีภาษาใดที่ค่าบวกสองเท่าสามารถก่อให้เกิดผลลบได้"

เสียงจากด้านหลังห้องดังขึ้น "ใช่.. ถูกแล้ว"


4
ฉันดีใจที่คุณมีคำตอบที่เป็นประโยชน์เพราะฉันอาจจะต้องเพิ่มคะแนนให้คุณสำหรับคำพูดนั้น :-)
Ben Blank

2
ฉันคิดว่าคำพูดนั้นคือ "ใช่แล้ว" - จาก Sidney Morgenbesser
Scott Weinstein

19

ขอบคุณทุกคนสำหรับคำแนะนำของคุณพวกเขามีประโยชน์มากจริงๆ! ฉันสิ้นสุดการใช้ลักษณนามเบส์ซื่อๆซึ่งผมยืมมาจากที่นี่ ฉันเริ่มต้นด้วยการป้อนรายการคำหลักที่ดี / ไม่ดีจากนั้นเพิ่มคุณลักษณะ "เรียนรู้" โดยใช้ความคิดเห็นของผู้ใช้ มันทำงานได้ดีทีเดียว

รายละเอียดทั้งหมดของการทำงานของฉันในขณะที่โพสต์บล็อก

อีกครั้งความช่วยเหลือของคุณมีประโยชน์มากขอบคุณมาก!


1
ลิงก์โพสต์บล็อกใช้งานไม่ได้อีกแล้วคุณช่วยอัปเดตได้ไหม
Petrutiu Mihai

สวัสดี @PetrutiuMihai บล็อกนั้นถูกลบออกไป แต่มันค่อนข้างเก่าไม่ได้อยู่ในหน้าการวิจัย ณ วันนี้ดังนั้นคุณจะไม่พลาดมากนัก (
วิ่ง

14

ฉันได้สร้างรายการคำที่มีป้ายกำกับความรู้สึก คุณสามารถเข้าถึงได้จากที่นี่:

http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip

คุณจะพบโปรแกรม Python สั้น ๆ ในบล็อกของฉัน:

http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/

โพสต์นี้แสดงวิธีการใช้รายการคำที่มีประโยคเดี่ยวและกับ Twitter

แนวทางรายการคำมีข้อ จำกัด คุณจะพบการตรวจสอบข้อ จำกัด ของรายการคำของฉันในบทความ "ANEW ใหม่: การประเมินรายการคำสำหรับการวิเคราะห์ความรู้สึกในไมโครบล็อก" บทความนั้นมีอยู่ในหน้าแรกของฉัน

โปรดทราบว่าunicode(s, 'utf-8')ไม่มีรหัส (ด้วยเหตุผลด้านการศึกษาทางเพศ)


"Posterous Spaces ไม่สามารถใช้งานได้อีกต่อไป" คุณสามารถโพสต์รหัสหลามได้หรือไม่
andilabs

1
ขอบคุณที่แจ้งให้ทราบ ตอนนี้ฉันได้เปลี่ยนลิงค์หลังเป็นลิงค์ Wordpress ที่ฉันย้ายบล็อกของฉัน
Finn Årup Nielsen

คุณช่วยพูดอะไรเกี่ยวกับการทดลองใด ๆ ด้วยคำพูดความรู้สึกของคุณได้ไหม ฉันหมายถึงสิ่งที่ถูกละเว้นการจำการจำแนกประเภท
andilabs

1
ฉันมีลิงก์ไปยังการประเมินผลบางอย่างที่นี่: neuro.compute.dtu.dk/wiki/AFINN#Evaluationฉันไม่ได้ประเมินประสิทธิภาพด้วยตัวเองในแง่ของความแม่นยำการจำและการจำแนกประเภท สิ่งที่ฉันทำคือความสัมพันธ์ของอันดับกับการติดฉลากทวีตของ Amazon Mechanical Turk ของ Mislove
Finn Årup Nielsen

10

งานวิจัยจำนวนมากระบุว่าจุดเริ่มต้นที่ดีในการวิเคราะห์ความรู้สึกคือการดูคำคุณศัพท์เช่นเป็นคำคุณศัพท์เชิงบวกหรือคำคุณศัพท์เชิงลบ สำหรับข้อความสั้น ๆ นี่เป็นทางเลือกเดียวของคุณ ... มีเอกสารที่ดูเอกสารทั้งหมดหรือการวิเคราะห์ระดับประโยค แต่อย่างที่คุณบอกว่าทวีตค่อนข้างสั้น ... ไม่มีวิธีวิเศษที่แท้จริงในการทำความเข้าใจ ความรู้สึกของประโยคดังนั้นฉันคิดว่าทางออกที่ดีที่สุดของคุณคือการตามหาเอกสารวิจัยเหล่านี้และพยายามหาชุดข้อมูลของคำคุณศัพท์เชิงบวก / เชิงลบ

ตอนนี้มีการกล่าวไปแล้วว่าความเชื่อมั่นเป็นเรื่องเฉพาะโดเมนและคุณอาจพบว่าเป็นการยากที่จะได้รับความแม่นยำระดับสูงด้วยชุดข้อมูลสำหรับวัตถุประสงค์ทั่วไป

โชคดี.


ฉันจะเอาเปรียบคุณ
Dana the Sane

4

ฉันคิดว่าคุณอาจพบว่ามันยากที่จะค้นหาสิ่งที่คุณต้องการ สิ่งที่ใกล้เคียงที่สุดที่ฉันรู้จักคือLingPipeซึ่งมีฟังก์ชันการวิเคราะห์ความรู้สึกและมีให้ใช้งานภายใต้ใบอนุญาตโอเพนซอร์สประเภท จำกัด แต่เขียนด้วย Java

นอกจากนี้ระบบวิเคราะห์ความรู้สึกมักได้รับการพัฒนาโดยการฝึกอบรมระบบเกี่ยวกับข้อมูลรีวิวผลิตภัณฑ์ / ภาพยนตร์ซึ่งแตกต่างจากทวีตทั่วไปอย่างมีนัยสำคัญ พวกเขาจะได้รับการปรับให้เหมาะสมกับข้อความที่มีหลายประโยคซึ่งเกี่ยวกับหัวข้อเดียวกัน ฉันสงสัยว่าคุณจะทำดีขึ้นมาพร้อมกับระบบตามกฎตัวเองอาจจะอยู่บนพื้นฐานของคำศัพท์ความเชื่อมั่นเหมือนหนึ่งมหาวิทยาลัยพิตส์เบิร์กให้

ลองดูWe Feel Fineสำหรับการนำแนวคิดที่คล้ายกันไปใช้กับอินเทอร์เฟซที่สวยงามจริงๆ (และtwitrratr )


2

ลองดูที่ทวิตเตอร์เครื่องมือในการวิเคราะห์ความเชื่อมั่น มันเขียนด้วยภาษาไพ ธ อนและใช้ลักษณนามของ Naive Bayes กับแมชชีนเลิร์นนิงกึ่งควบคุม แหล่งที่สามารถพบได้ที่นี่


1

บางทีTextBlob (ขึ้นอยู่กับ NLTK และรูปแบบ) เป็นเครื่องมือวิเคราะห์ความรู้สึกที่เหมาะสมสำหรับคุณ


1

ฉันเจอNatural Language Toolkitเมื่อสักครู่ที่ผ่านมา คุณอาจใช้เป็นจุดเริ่มต้น นอกจากนี้ยังมีโมดูลและส่วนเสริมจำนวนมากดังนั้นอาจมีบางอย่างที่คล้ายกันอยู่แล้ว


0

ความคิดที่แปลกประหลาด: คุณสามารถลองใช้ Twitter API เพื่อดาวน์โหลดทวีตชุดใหญ่จากนั้นจำแนกชุดย่อยของชุดนั้นโดยใช้อีโมติคอน: กลุ่มบวกหนึ่งกลุ่มสำหรับ ":)", ":]", ": D" ฯลฯ และอีกกลุ่มเชิงลบที่มี ":(" ฯลฯ

เมื่อคุณมีการจำแนกประเภทคร่าวๆแล้วคุณสามารถค้นหาเบาะแสเพิ่มเติมด้วยการวิเคราะห์ความถี่หรือ ngram หรือบางอย่างตามบรรทัดเหล่านั้น

อาจดูเหมือนโง่ แต่มีการวิจัยอย่างจริงจังเกี่ยวกับเรื่องนี้ (ค้นหา "การวิเคราะห์ความรู้สึก" และอิโมติคอน) คุ้มค่ากับการดู



0

สำหรับผู้ที่สนใจในการเข้ารหัส Twitter Sentiment Analyis ตั้งแต่เริ่มต้นมีหลักสูตร Coursera " Data Science " พร้อมรหัสหลามบน GitHub (เป็นส่วนหนึ่งของการมอบหมาย 1 - ลิงก์ ) ความรู้สึกเป็นส่วนหนึ่งของAFINN-111 AFINN-111

คุณสามารถหาแนวทางแก้ไขปัญหาการทำงานเช่นที่นี่ นอกจากรายการความเชื่อมั่น AFINN-111 แล้วยังมีการสร้างรายการคำแบบไดนามิกตามความถี่ของคำศัพท์ในทวีตที่มีคะแนน pos / Neg (ดูที่นี่ )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.