โครงการตรวจจับข่าวปลอมใน Python [ด้วยการเข้ารหัส]

เผยแพร่แล้ว: 2020-12-14

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

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

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

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

อ่าน: แนวคิดและหัวข้อโครงการ Python

มีชุดข้อมูลจำนวนมากสำหรับแอปพลิเคชันประเภทนี้ แต่เราจะใช้ชุดข้อมูลที่กล่าวถึงใน ที่ นี้ ข้อมูลนี้มีฟีดข่าวมากกว่า 7500+ รายการที่มีป้ายกำกับเป้าหมายสองป้าย: ปลอมหรือของจริง ชุดข้อมูลยังประกอบด้วยชื่อของชิ้นข่าวเฉพาะ

ขั้นตอนในไปป์ไลน์สำหรับการประมวลผลภาษาธรรมชาติจะเป็นดังนี้:

  1. การรับและโหลดข้อมูล
  2. การทำความสะอาดชุดข้อมูล
  3. การลบสัญลักษณ์พิเศษ
  4. การลบเครื่องหมายวรรคตอน
  5. การลบคำหยุด
  6. ต้นกำเนิด
  7. Tokenization
  8. การแยกคุณลักษณะ
  9. TF-IDF vectorizer
  10. ตัวนับเวกเตอร์พร้อมหม้อแปลง TF-IDF
  11. การฝึกอบรมและการตรวจสอบแบบจำลองการเรียนรู้ของเครื่อง

ก่อนที่เราจะเริ่มพูดถึงขั้นตอนการใช้งานของ โครงการตรวจจับข่าวปลอม ให้เรานำเข้าไลบรารีที่จำเป็นก่อน:

รหัส:

นำเข้าแพนด้าเป็น 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' )
model.fit(X_train, y_train)
y_predict = model.predict(X_test)
พิมพ์(ความถูกต้อง_score(y_test, y_predict))

โมเดลทำงานได้ดีทีเดียว ความแม่นยำ 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 เป็นผู้ช่วยชีวิตเมื่อพูดถึงการดึงข้อมูลจำนวนมหาศาลจากเว็บไซต์ ซึ่งผู้ใช้สามารถใช้ในการดำเนินการต่างๆ ในโลกแห่งความเป็นจริงได้ในภายหลัง เช่น การเปรียบเทียบราคา ประกาศรับสมัครงาน การวิจัยและพัฒนา และอื่นๆ