โครงการตรวจจับข่าวปลอมใน Python [ด้วยการเข้ารหัส]
เผยแพร่แล้ว: 2020-12-14เคยอ่านข่าวที่ดูเหมือนหลอกลวงหรือไม่? เราทุกคนพบบทความข่าวดังกล่าว และรับรู้โดยสัญชาตญาณว่ามีบางอย่างไม่ถูกต้อง เนื่องจากมีโพสต์จำนวนมาก จึงแทบจะแยกสิ่งที่ถูกต้องออกจากสิ่งที่ไม่ถูกต้องได้ ในที่นี้ เราไม่เพียงแต่พูดถึงการกล่าวอ้างที่หลอกลวงและประเด็นข้อเท็จจริงเท่านั้น แต่ยังพูดถึงสิ่งที่ดูผิดอย่างประณีตในภาษาด้วย
คุณเคยสงสัยหรือไม่ว่าจะสร้าง โครงการตรวจจับข่าวปลอมได้อย่างไร? แต่ ไม่มีวิธีง่ายๆ ในการค้นหาว่าข่าวใดเป็นข่าวปลอมและไม่ใช่ โดยเฉพาะอย่างยิ่งในทุกวันนี้ ด้วยความเร็วของการแพร่กระจายข่าวบนโซเชียลมีเดีย อย่างไรก็ตาม วิธีแก้ไขบางอย่างอาจช่วยในการระบุการกระทำผิดเหล่านี้
มีสองวิธีในการอ้างว่าข่าวบางข่าวเป็นข่าวปลอมหรือไม่: อย่างแรก โจมตีประเด็นข้อเท็จจริง ประการที่สอง ภาษา อดีตสามารถทำได้ผ่านการค้นหาจำนวนมากในอินเทอร์เน็ตด้วยระบบสืบค้นอัตโนมัติ อาจเป็นงานที่หนักหนาสาหัส โดยเฉพาะอย่างยิ่งสำหรับผู้ที่เพิ่งเริ่มต้นวิทยาศาสตร์ข้อมูลและการประมวลผลภาษาธรรมชาติ
อย่างหลังเป็นไปได้ผ่านไปป์ไลน์การประมวลผลภาษาธรรมชาติตามด้วยไปป์ไลน์แมชชีนเลิร์นนิง เป็นวิธีที่เราจะใช้ โครงการตรวจจับข่าวปลอม ใน Python เป็นอีกปัญหาหนึ่งที่ได้รับการยอมรับว่าเป็นปัญหาการเรียนรู้ของเครื่องที่เป็นปัญหาการประมวลผลภาษาธรรมชาติ หากคุณเป็นมือใหม่และสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับวิทยาศาสตร์ข้อมูล โปรดดูหลักสูตรออนไลน์ด้านวิทยาศาสตร์ข้อมูลของเราจากมหาวิทยาลัยชั้นนำ
อ่าน: แนวคิดและหัวข้อโครงการ Python
มีชุดข้อมูลจำนวนมากสำหรับแอปพลิเคชันประเภทนี้ แต่เราจะใช้ชุดข้อมูลที่กล่าวถึงใน ที่ นี้ ข้อมูลนี้มีฟีดข่าวมากกว่า 7500+ รายการที่มีป้ายกำกับเป้าหมายสองป้าย: ปลอมหรือของจริง ชุดข้อมูลยังประกอบด้วยชื่อของชิ้นข่าวเฉพาะ
ขั้นตอนในไปป์ไลน์สำหรับการประมวลผลภาษาธรรมชาติจะเป็นดังนี้:
- การรับและโหลดข้อมูล
- การทำความสะอาดชุดข้อมูล
- การลบสัญลักษณ์พิเศษ
- การลบเครื่องหมายวรรคตอน
- การลบคำหยุด
- ต้นกำเนิด
- Tokenization
- การแยกคุณลักษณะ
- TF-IDF vectorizer
- ตัวนับเวกเตอร์พร้อมหม้อแปลง TF-IDF
- การฝึกอบรมและการตรวจสอบแบบจำลองการเรียนรู้ของเครื่อง
ก่อนที่เราจะเริ่มพูดถึงขั้นตอนการใช้งานของ โครงการตรวจจับข่าวปลอม ให้เรานำเข้าไลบรารีที่จำเป็นก่อน:
รหัส:
นำเข้าแพนด้าเป็น pd นำเข้า numpy เป็น np นำเข้าอีกครั้ง นำเข้าสตริง จาก nltk.corpus นำเข้าคำหยุด จาก nltk.tokenize นำเข้า word_tokenize stop_words = set (stopwords.words ( 'ภาษาอังกฤษ' )) |
ขั้นตอนแรกคือการรับข้อมูล เราได้จัดเตรียมลิงก์ไปยังไฟล์ CSV แล้ว แต่สิ่งสำคัญคือต้องหารือเกี่ยวกับวิธีอื่นในการสร้างข้อมูลของคุณ
วิธีการหนึ่งคือการขูดเว็บ สำหรับสิ่งนี้ เราจำเป็นต้องเขียนโค้ดโปรแกรมรวบรวมข้อมูลเว็บและระบุไซต์ที่คุณต้องการรับข้อมูล แต่ระวัง มีสองปัญหากับวิธีนี้
ประการแรก การลบไซต์จำนวนมากอาจผิดกฎหมาย ดังนั้นคุณต้องดูแลเรื่องนี้ และอย่างที่สอง ข้อมูลจะดิบมาก ไปป์ไลน์ทั้งหมดจะถูกผนวกเข้ากับรายการขั้นตอนในการแปลงข้อมูลดิบนั้นเป็นไฟล์ CSV หรือชุดข้อมูลที่ใช้การได้ ดังนั้นเราจึงใช้ไฟล์ CSV ที่ตั้งไว้ล่วงหน้าพร้อมข้อมูลที่จัดระเบียบ
อย่างไรก็ตาม หากสนใจ คุณสามารถดูหลักสูตรของ upGrad เกี่ยวกับวิทยาศาสตร์ข้อมูล ซึ่งมีแหล่งข้อมูลเพียงพอพร้อมคำอธิบายที่เหมาะสมเกี่ยวกับวิศวกรรมข้อมูลและการขูดเว็บ อย่าลืมตรวจสอบสิ่งเหล่านั้น ที่ นี่
นี่คือวิธีที่เรานำเข้าชุดข้อมูลและผนวกป้ายกำกับ สังเกตว่าเราปล่อยคอลัมน์ที่ไม่จำเป็นออกจากชุดข้อมูลอย่างไร หากต้องการค่าที่สูงกว่า คุณสามารถเก็บคอลัมน์เหล่านั้นไว้ได้ แต่ตอนนี้ โครงการตรวจจับข่าวปลอม ของเรา จะดำเนินไปอย่างราบรื่นเฉพาะกับคอลัมน์ข้อความและป้ายกำกับเป้าหมาย
รหัส:
df_text = pd.read_csv ( 'fake_or_real_news.csv' , การเข้ารหัส = 'latin-1' ) df_text.columns = [ 'id' , 'title' , 'text' , 'label' ] df_text.drop(['id', 'title'], axis=1) |
ขั้นตอนต่อไปคือการล้างข้อมูลที่มีอยู่ ทำไมขั้นตอนนี้จึงจำเป็น? สิ่งสำคัญคือต้องเข้าใจว่าเรากำลังทำงานกับเครื่องจักรและสอนให้แยกแยะของปลอมและของจริง ขณะนี้ เรามีข้อมูลที่เป็นข้อความ แต่คอมพิวเตอร์ทำงานกับตัวเลข ก่อนอื่นต้องแปลงเป็นตัวเลข และขั้นตอนก่อนหน้านั้นคือเพื่อให้แน่ใจว่าเรากำลังเปลี่ยนเฉพาะข้อความที่จำเป็นสำหรับความเข้าใจเท่านั้น
ขั้นตอนแรกในไปป์ไลน์การทำความสะอาดคือการตรวจสอบว่าชุดข้อมูลมีสัญลักษณ์พิเศษที่จะล้างหรือไม่ อาจเป็นที่อยู่เว็บหรือสัญลักษณ์อ้างอิงอื่นๆ เช่น at(@) หรือแฮชแท็ก นี่คือรหัส:
รหัส:
# ลบ URL text = re.sub( r”http\S+|www\S+|https\S+” , ” , text, flags=re.MULTILINE) # ลบผู้ใช้ @ การอ้างอิงและ '#' ออกจากข้อความ text = re.sub( r'\@\w+|\#' , ” , text) |
เมื่อเราลบออกแล้ว ขั้นตอนต่อไปคือการล้างสัญลักษณ์อื่นๆ: เครื่องหมายวรรคตอน หากเราคิดดูแล้ว เครื่องหมายวรรคตอนไม่มีข้อมูลที่ชัดเจนในการทำความเข้าใจความเป็นจริงของข่าวบางข่าว บางครั้งอาจเป็นไปได้ว่าหากมีเครื่องหมายวรรคตอนเยอะ ข่าวก็ไม่ใช่เรื่องจริง เช่น การใช้เครื่องหมายอัศเจรีย์มากเกินไป
แต่นั่นเป็นกรณีที่ไม่ค่อยพบและจะต้องมีการวิเคราะห์ตามกฎเฉพาะ ดังนั้น สำหรับ โครงการตรวจจับข่าวปลอม เราจะนำเครื่องหมายวรรคตอนออก นี่คือวิธีการ:
รหัส:
text = text.translate(str.maketrans( ” , ” , string.punctuation)) |
ขั้นตอนต่อไปคือการตรึงคำไว้ที่แกนกลางและแปลงคำให้เป็นสัญลักษณ์ Tokenization หมายถึงการทำให้ทุกประโยคเป็นรายการคำหรือโทเค็น นี่คือรหัสสองบรรทัดที่ต้องต่อท้าย:
รหัส:
โทเค็น = word_tokenize (ข้อความ) คำ = [w สำหรับ w ใน โทเค็น ถ้า ไม่ใช่ w ใน stop_words] |
ขั้นตอนต่อไปคือขั้นตอนที่สำคัญ การแปลงโทเค็นเป็นตัวเลขที่มีความหมาย ขั้นตอนนี้เรียกอีกอย่างว่าการแยกคุณลักษณะ สำหรับแอปพลิเคชันของเรา เราจะใช้วิธี TF-IDF เพื่อแยกและสร้างคุณลักษณะสำหรับไปป์ไลน์การเรียนรู้ของเครื่อง
TF-IDF หมายถึง ความถี่-ผกผันของเอกสารโดยพื้นฐานแล้ว ตามชื่อที่แนะนำ เรารวบรวมข้อมูลเกี่ยวกับชุดข้อมูลผ่านความถี่ของเงื่อนไขตลอดจนความถี่ของเงื่อนไขในชุดข้อมูลทั้งหมด หรือการรวบรวมเอกสาร
TF-IDF สามารถคำนวณได้ง่ายโดยการผสมทั้งค่า TF และ IDF ทั้งสองสูตรเกี่ยวข้องกับอัตราส่วนอย่างง่าย
TF = ไม่ จำนวนครั้งที่คำดังกล่าวปรากฏในเอกสาร / จำนวนเงื่อนไขทั้งหมด
IDF = บันทึกของ ( จำนวนเอกสารทั้งหมด / จำนวนเอกสารที่คำนั้นปรากฏ )
ตอนนี้ Python มีการใช้งานสองแบบสำหรับการแปลง TF-IDF อย่างแรกคือ TF-IDF vectoriser และประการที่สองคือหม้อแปลง TF-IDF ความแตกต่างคือหม้อแปลงต้องใช้คำศัพท์ก่อนการแปลงในขณะที่ vectoriser รวมทั้งสองขั้นตอนเข้าเป็นหนึ่งเดียว เรายังสามารถใช้เครื่องนับเวกเตอร์ซึ่งเป็นการนำคำศัพท์แบบง่ายๆ ไปใช้ แต่ TF-IDF จะทำงานได้ดีกับชุดข้อมูลเฉพาะ

นี่คือวิธีการใช้งาน TF-IDF
รหัส:
จาก sklearn.feature_extract.text นำเข้า TfidfVectorizer tf_vector = TfidfVectorizer(sublinear_tf= True ) tf_vector.fit(df_text[ 'ข้อความ' ]) |
ขั้นตอนต่อไปคือไปป์ไลน์แมชชีนเลิร์นนิง เช่นเดียวกับไปป์ไลน์ ML ทั่วไป เราจำเป็นต้องรับข้อมูลไปยัง X และ y ในการทำเช่นนั้น เราใช้ X เป็นเมทริกซ์ที่จัดเตรียมไว้เป็นเอาต์พุตโดยเวกเตอร์ TF-IDF ซึ่งจำเป็นต้องทำให้แบน
เราสามารถใช้ฟังก์ชัน travel ใน Python เพื่อแปลงเมทริกซ์เป็นอาร์เรย์ ค่า y ไม่สามารถต่อท้ายได้โดยตรง เนื่องจากยังคงเป็นเลเบลและไม่ใช่ตัวเลข ในการแปลงเป็น 0 และ 1 เราใช้ตัวเข้ารหัสป้ายกำกับของ sklearn
ตัวเข้ารหัสนี้แปลงข้อความฉลากเป็นเป้าหมายที่มีหมายเลข ตัวอย่างเช่น สมมติว่าเรามีรายการป้ายกำกับดังนี้ ['ของจริง', 'ของปลอม', 'ของปลอม', 'ของปลอม']
เราต้องการรายการดังนี้ [1, 0, 0, 0] ตัวเข้ารหัสฉลากทำอะไรคือ ใช้ป้ายกำกับที่แตกต่างกันทั้งหมดและสร้างรายการ สำหรับตัวอย่างของเรา รายการจะเป็น ['ของปลอม', 'ของจริง']
นี่คือการใช้งานสิ่งเดียวกัน:
รหัส:
X_text = tf_vector.transform(df_text[ 'ข้อความ' ].ravel()) y_values = np.array(df_text[ 'label' ].ravel()) |
จาก การ ประมวลผลล่วงหน้า การนำเข้า sklearn le = การประมวลผลล่วงหน้า LabelEncoder() le.fit(y_values) le.transform(ค่าy_values) |
เมื่อเสร็จแล้ว การแบ่งการฝึกอบรมและการทดสอบจะเสร็จสิ้น สามารถทำได้โดยใช้แพ็คเกจการประมวลผลล่วงหน้าของ sklearn และนำเข้าฟังก์ชันการแยกการทดสอบรถไฟ
รหัส:
จาก sklearn.model_selection นำเข้า train_test_split X_train, X_test, y_train, y_test = train_test_split(X_text, y_values, test_size= 0.15 , random_state= 120 ) |
ขั้นตอนสุดท้ายคือการใช้แบบจำลอง มีโมเดลแมชชีนเลิร์นนิงดีๆ มากมายให้เลือกใช้ แต่แม้แต่โมเดลพื้นฐานที่เรียบง่ายก็ยังใช้ได้ดีกับการนำ โปรเจ็กต์ ตรวจจับข่าวปลอม ไป ใช้งาน ขั้นแรกเราใช้แบบจำลองการถดถอยโลจิสติก นี่คือวิธีการใช้งานโดยใช้ sklearn
รหัส:
จาก sklearn.metrics นำเข้าความแม่นยำ_score จาก sklearn.linear_model นำเข้า LogisticRegression model = LogisticRegression(ตัวแก้= 'lbfgs' ) |
โมเดลทำงานได้ดีทีเดียว ความแม่นยำ 92 เปอร์เซ็นต์ของแบบจำลองการถดถอยนั้นค่อนข้างดี คุณยังสามารถใช้โมเดลอื่นๆ ที่มีอยู่และตรวจสอบความถูกต้องได้
นี่คือวิธีที่คุณสามารถใช้โครงการตรวจจับข่าวปลอมโดยใช้ Python
โปรดทราบว่ามีหลายสิ่งที่ต้องทำที่นี่ ไปป์ไลน์ NLP ยังไม่เสร็จสมบูรณ์ มีฟังก์ชันอื่นๆ มากมายที่สามารถนำมาใช้เพื่อดึงคุณลักษณะที่ดียิ่งขึ้นไปอีก
อ่านเพิ่มเติม: แนวคิดโครงการโอเพ่นซอร์สของ Python
วิธีที่ข่าวปลอมกำลังปรับเทคโนโลยี จำเป็นต้องมีโมเดลการประมวลผลที่ดีขึ้นและดีขึ้น และโมเดลเหล่านี้จะเข้าใจภาษาธรรมชาติมากกว่าและถูกจัดวางให้เป็นรูปแบบการเรียนรู้ของเครื่องน้อยลง นอกจากนี้ยังสามารถปรับแต่งโมเดลได้อย่างละเอียดตามคุณสมบัติที่ใช้ ชุดข้อมูลสามารถปรับเปลี่ยนแบบไดนามิกเพื่อให้ทำงานกับข้อมูลปัจจุบันได้ แต่นั่นจะต้องใช้แบบจำลองที่ได้รับการฝึกอบรมอย่างละเอียดถี่ถ้วนในบทความข่าวปัจจุบัน
ดังนั้น หากมีข้อมูลเพิ่มเติม สามารถสร้างแบบจำลองที่ดีขึ้นและสามารถปรับปรุงการบังคับใช้ โครงการตรวจจับข่าวปลอม ได้ แต่โครงร่างภายในและไปป์ไลน์หลักจะยังคงเหมือนเดิม ไปป์ไลน์ที่อธิบายนั้นปรับเปลี่ยนได้อย่างมากกับการทดลองใดๆ ที่คุณอาจต้องการดำเนินการ รู้สึกอิสระที่จะลองและเล่นกับฟังก์ชั่นต่างๆ
หากคุณอยากรู้เกี่ยวกับการเรียนรู้วิทยาศาสตร์ข้อมูลเพื่อก้าวไปสู่ความก้าวหน้าทางเทคโนโลยีอย่างรวดเร็ว ลองดู Executive PG Program ของ upGrad & IIIT-B ในด้าน Data Science และเพิ่มทักษะให้กับตัวเองเพื่ออนาคต
ทักษะที่จำเป็นในการพัฒนาโครงการตรวจจับข่าวปลอมใน Python มีอะไรบ้าง
Python ใช้สำหรับสร้างโครงการตรวจจับข่าวปลอมเนื่องจากการพิมพ์แบบไดนามิก โครงสร้างข้อมูลในตัว ไลบรารีที่ทรงพลัง เฟรมเวิร์ก และการสนับสนุนจากชุมชน ทักษะที่จำเป็นอื่นๆ ที่จำเป็นในการพัฒนาโครงการตรวจจับข่าวปลอมใน Python ได้แก่ การเรียนรู้ด้วยเครื่อง การประมวลผลภาษาธรรมชาติ และปัญญาประดิษฐ์ ความรู้ทักษะเหล่านี้เป็นสิ่งจำเป็นสำหรับผู้เรียนที่ตั้งใจจะทำโครงงานนี้ ผู้เรียนสามารถเรียนรู้ทักษะเหล่านี้ทางออนไลน์ได้อย่างง่ายดาย
บริษัทต่างๆ ใช้โครงการตรวจจับข่าวปลอมของ Python อย่างไร
เนื่องจากข่าวปลอมส่วนใหญ่พบได้บนแพลตฟอร์มโซเชียลมีเดีย การแยกข่าวจริงและข่าวปลอมจึงอาจเป็นเรื่องยาก แพลตฟอร์มโซเชียลมีเดียและบริษัทสื่อส่วนใหญ่ใช้โครงการตรวจจับข่าวปลอมเพื่อกำหนดโดยอัตโนมัติว่าข่าวที่เผยแพร่นั้นถูกประดิษฐ์ขึ้นหรือไม่ บริษัทส่วนใหญ่ใช้แมชชีนเลิร์นนิงนอกเหนือจากโครงการเพื่อทำให้กระบวนการค้นหาข่าวปลอมเป็นไปโดยอัตโนมัติ แทนที่จะพึ่งพามนุษย์เพื่อจัดการกับงานที่น่าเบื่อหน่าย
แอปพลิเคชั่นอื่น ๆ ของ python ในชีวิตจริงมีอะไรบ้าง?
Python มีแอปพลิเคชั่นในโลกแห่งความเป็นจริงมากมาย Python รองรับระบบปฏิบัติการข้ามแพลตฟอร์ม ซึ่งทำให้การพัฒนาแอพพลิเคชั่นที่ใช้งานได้ง่ายขึ้นมาก Python ใช้เพื่อขับเคลื่อนแอพที่เป็นที่รู้จักมากที่สุดในโลก รวมถึง YouTube, BitTorrent และ DropBox มักใช้ Python ในการผลิตเกมที่เป็นนวัตกรรม Python ยังใช้ในการเรียนรู้ของเครื่อง วิทยาศาสตร์ข้อมูล และปัญญาประดิษฐ์ เนื่องจากมันช่วยในการสร้างอัลกอริธึมที่ทำซ้ำตามข้อมูลที่เก็บไว้ Python เป็นผู้ช่วยชีวิตเมื่อพูดถึงการดึงข้อมูลจำนวนมหาศาลจากเว็บไซต์ ซึ่งผู้ใช้สามารถใช้ในการดำเนินการต่างๆ ในโลกแห่งความเป็นจริงได้ในภายหลัง เช่น การเปรียบเทียบราคา ประกาศรับสมัครงาน การวิจัยและพัฒนา และอื่นๆ