Python의 가짜 뉴스 탐지 프로젝트 [코딩 포함]

게시 됨: 2020-12-14

가짜처럼 보이는 뉴스를 읽은 적이 있습니까? 우리는 모두 그런 뉴스 기사를 접하고 본능적으로 무언가가 옳지 않다고 느낀다는 것을 인식합니다. 게시물이 너무 많기 때문에 옳고 그름을 구분하는 것은 거의 불가능합니다. 여기서 우리는 허위 주장과 사실적 요점에 대해서만 이야기하는 것이 아니라 언어 자체에서 복잡하게 잘못 보이는 것들에 대해 이야기하고 있습니다.

가짜 뉴스 탐지 프로젝트 를 개발하는 방법이 궁금 하신가요? 그러나 특히 요즘은 소셜미디어에 퍼지는 뉴스의 속도로 인해 어떤 뉴스가 가짜이고 어떤 것이 가짜인지 쉽게 판별할 수 있는 방법이 없습니다. 하지만 일부 솔루션은 이러한 잘못을 식별하는 데 도움이 될 수 있습니다.

일부 뉴스가 가짜인지 아닌지를 주장하는 두 가지 방법이 있습니다. 첫째, 사실에 대한 공격입니다. 둘째, 언어. 전자는 자동화된 쿼리 시스템을 사용하여 인터넷에 대한 상당한 검색을 통해서만 수행할 수 있습니다. 특히 데이터 과학과 자연어 처리를 막 시작하는 사람에게는 압도적인 작업이 될 수 있습니다.

후자는 기계 학습 파이프라인이 뒤따르는 자연어 처리 파이프라인을 통해 가능합니다. 이것이 우리가 파이썬에서 가짜 뉴스 탐지 프로젝트 를 구현하는 방법입니다. 이는 자연어 처리 문제로 제기되는 머신러닝 문제로 인식되고 있는 또 다른 문제 중 하나이다. 초보자이고 데이터 과학에 대해 더 자세히 알고 싶다면 최고의 대학에서 제공하는 데이터 과학 온라인 과정을 확인하십시오.

읽기: Python 프로젝트 아이디어 및 주제

이러한 유형의 애플리케이션에 대한 데이터 세트가 많이 있지만 여기에 언급된 데이터 세트를 사용합니다 . 데이터에는 가짜 또는 진짜라는 두 가지 대상 레이블이 있는 약 7500개 이상의 뉴스 피드가 포함되어 있습니다. 데이터 세트는 또한 특정 뉴스 기사의 제목으로 구성됩니다.

자연어 처리를 위한 파이프라인의 단계는 다음과 같습니다.

  1. 데이터 획득 및 로드
  2. 데이터세트 정리
  3. 추가 기호 제거
  4. 구두점 제거
  5. 불용어 제거
  6. 형태소 분석
  7. 토큰화
  8. 특징 추출
  9. TF-IDF 벡터라이저
  10. TF-IDF 변압기가 있는 카운터 벡터라이저
  11. 머신 러닝 모델 학습 및 검증

가짜 뉴스 탐지 프로젝트 의 구현 단계에 대해 논의하기 전에 필요한 라이브러리를 가져오도록 하겠습니다.

암호:

pandas를 pd로 가져오기
numpy를 np로 가져오기
다시 수입
가져오기 문자열
nltk.corpus에서 불용어 가져오기
nltk.tokenize에서 가져오기 word_tokenize

stop_words = set(stopwords.words( 'english' ))

첫 번째 단계는 데이터를 수집하는 것입니다. 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 제거
텍스트 = re.sub( r”http\S+|www\S+|https\S+” , , 텍스트, 플래그=re.MULTILINE)
# 텍스트에서 사용자 @ 참조 및 '#' 제거
텍스트 = re.sub( r'\@\w+|\#' , , 텍스트)

그것을 제거하면 다음 단계는 다른 기호인 구두점을 지우는 것입니다. 생각해 보면 구두점은 특정 뉴스의 현실을 이해하는 데 명확한 입력이 없습니다. 때로는 구두점이 많으면 느낌표의 남용과 같이 뉴스가 실제가 아닐 수도 있습니다.

그러나 이러한 경우는 드물며 특정 규칙 기반 분석이 필요합니다. 따라서 이 가짜 뉴스 탐지 프로젝트 에서는 구두점을 제거합니다. 방법은 다음과 같습니다.

암호:

텍스트 = text.translate(str.maketrans( , , string.구두점))

다음 단계는 단어를 핵심으로 요약하고 단어를 토큰화하는 것입니다. 토큰화는 모든 문장을 단어 또는 토큰 목록으로 만드는 것을 의미합니다. 다음은 추가해야 하는 두 줄 코드입니다.

암호:

토큰 = word_tokenize(텍스트)
단어 = [ stop_words 에서 w 아닌 ​​경우 토큰 에서 w 대해 w ]

다음 단계는 결정적인 단계입니다. 토큰을 의미 있는 숫자로 변환합니다. 이 단계를 특징 추출이라고도 합니다. 우리 응용 프로그램의 경우 TF-IDF 방법을 사용하여 기계 학습 파이프라인의 기능을 추출하고 구축할 것입니다.

TF-IDF는 본질적으로 용어 빈도 역 문서 빈도를 의미합니다. 이름에서 알 수 있듯이 전체 데이터 세트 또는 문서 모음에서 용어의 빈도뿐만 아니라 용어의 빈도를 통해 데이터 세트에 대한 정보를 퍼냅니다.

TF-IDF는 TF와 IDF의 두 값을 혼합하여 쉽게 계산할 수 있습니다. 두 공식 모두 단순 비율을 포함합니다.

TF = 아니요. 문서에 용어가 나타나는 횟수 / 총 용어 수

IDF = log of ( 총 문서 수 / 용어가 나타나는 문서 수 )

이제 Python에는 TF-IDF 변환을 위한 두 가지 구현이 있습니다. 첫 번째는 TF-IDF 벡터라이저이고 두 번째는 TF-IDF 변환기입니다. 차이점은 변환기는 변환 전에 백 오브 워드 구현이 필요하지만 벡터라이저는 두 단계를 하나로 결합한다는 것입니다. bag-of-words의 간단한 구현인 count vectoriser를 사용할 수도 있습니다. 그러나 TF-IDF는 특정 데이터 세트에서 더 잘 작동합니다.

TF-IDF를 구현하는 방법은 다음과 같습니다.

암호:

sklearn.feature_extraction.text 에서 TfidfVectorizer 가져오기

tf_vector = TfidfVectorizer(sublinear_tf= )
tf_vector.fit(df_text[ '텍스트' ])

다음 단계는 기계 학습 파이프라인입니다. 일반적인 ML 파이프라인과 마찬가지로 데이터를 X와 y로 가져와야 합니다. 이를 위해 평면화해야 하는 TF-IDF 벡터라이저에 의해 출력으로 제공되는 행렬로 X를 사용합니다.

파이썬에서 여행 함수를 사용하여 행렬을 배열로 변환할 수 있습니다. y 값은 여전히 ​​레이블이지 숫자가 아니므로 직접 추가할 수 없습니다. 0과 1로 변환하기 위해 sklearn의 레이블 인코더를 사용합니다.

이 인코더는 레이블 텍스트를 번호가 매겨진 대상으로 변환합니다. 예를 들어 다음과 같은 레이블 목록이 있다고 가정합니다. ['real', 'fake', 'fake', 'fake']

본질적으로 필요한 것은 [1, 0, 0, 0]과 같은 목록입니다. 레이블 인코더가 하는 일은 모든 고유한 레이블을 가져와 목록을 만드는 것입니다. 이 예에서 목록은 ['가짜', '진짜']입니다.

다음은 동일한 구현입니다.

암호:

X_text = tf_vector.transform(df_text[ '텍스트' ].ravel())
y_values ​​= np.array(df_text[ '레이블' ].ravel())

sklearn 에서 가져오기 전처리
le = 전처리.LabelEncoder()
le.fit(y_values) le.transform(y_values)

완료되면 훈련 및 테스트 분할이 완료됩니다. sklearn의 전처리 패키지를 사용하고 기차 테스트 분할 기능을 가져와서 달성할 수 있습니다.

암호:

sklearn.model_selection import 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에서 정확도_점수 가져오기

sklearn.linear_model에서 LogisticRegression 가져오기

모델 = LogisticRegression(솔버= 'lbfgs' )
model.fit(X_train, y_train)
y_predict = model.predict(X_test)
인쇄(정확도_점수(y_test, y_predict))

모델은 꽤 잘 수행합니다. 회귀 모델의 92% 정확도는 꽤 괜찮습니다. 사용 가능한 다른 모델을 구현하고 정확도를 확인할 수도 있습니다.

이것이 Python을 사용하여 가짜 뉴스 탐지 프로젝트를 구현하는 방법입니다.

여기에서 할 일이 많다는 점에 유의하십시오. NLP 파이프라인은 아직 완전히 완료되지 않았습니다. 더 나은 기능 추출을 위해 적용할 수 있는 다른 많은 기능이 있습니다.

또한 읽기: Python 오픈 소스 프로젝트 아이디어

가짜 뉴스가 기술을 적용하는 방식에 따라 더 나은 처리 모델이 필요합니다. 그리고 이러한 모델은 자연어 이해에 더 가깝고 기계 학습 모델 자체로 간주되지 않습니다. 사용된 기능에 따라 모델을 미세 조정할 수도 있습니다. 데이터 세트는 현재 데이터에서 작동하도록 동적으로 조정 가능하게 만들 수 있습니다. 그러나 이를 위해서는 최신 뉴스 기사에 대해 철저하게 훈련된 모델이 필요합니다.

따라서 더 많은 데이터를 사용할 수 있다면 더 나은 모델을 만들 수 있고 가짜 뉴스 탐지 프로젝트 의 적용 가능성을 높일 수 있습니다. 그러나 내부 계획과 핵심 파이프라인은 그대로 유지됩니다. 설명된 파이프라인은 수행하려는 모든 실험에 매우 적합합니다. 다양한 기능을 마음껏 사용해 보세요.

급변하는 기술 발전의 선두에 서기 위해 데이터 과학을 배우는 데 관심이 있다면 upGrad & IIIT-B의 데이터 과학 Executive PG 프로그램 을 확인하고 미래를 위한 기술을 향상시키십시오.

Python에서 가짜 뉴스 탐지 프로젝트를 개발하는 데 필요한 기술은 무엇입니까?

Python은 동적 타이핑, 내장 데이터 구조, 강력한 라이브러리, 프레임워크 및 커뮤니티 지원으로 인해 가짜 뉴스 탐지 프로젝트를 구축하는 데 사용됩니다. Python에서 가짜 뉴스 탐지 프로젝트를 개발하는 데 필요한 다른 필수 기술은 기계 학습, 자연어 처리 및 인공 지능입니다. 이러한 기술에 대한 지식은 이 프로젝트를 수행하려는 학습자에게 필수입니다. 학습자는 온라인에서 이러한 기술을 쉽게 배울 수 있습니다.

회사는 Python의 가짜 뉴스 탐지 프로젝트를 어떻게 사용합니까?

대부분의 가짜 뉴스는 소셜 미디어 플랫폼에서 발견되기 때문에 진짜 뉴스와 가짜 뉴스를 구분하는 것이 어려울 수 있습니다. 소셜 미디어 플랫폼과 대부분의 미디어 회사는 가짜 뉴스 탐지 프로젝트를 사용하여 유포되는 뉴스가 조작되었는지 여부를 자동으로 판별합니다. 대부분의 회사는 지루한 작업을 사람에게 의존하지 않고 가짜 뉴스를 찾는 이 프로세스를 자동화하기 위해 프로젝트와 함께 머신 러닝을 사용합니다.

파이썬의 다른 실제 응용 프로그램은 무엇입니까?

Python에는 다양한 실제 응용 프로그램이 있습니다. Python은 플랫폼 간 운영 체제를 지원하므로 Python을 사용하여 애플리케이션 개발을 훨씬 더 쉽게 관리할 수 있습니다. Python은 YouTube, BitTorrent 및 DropBox를 포함하여 세계에서 가장 잘 알려진 앱을 구동하는 데 사용됩니다. Python은 종종 혁신적인 게임 제작에 사용됩니다. Python은 저장된 데이터를 기반으로 반복 알고리즘을 생성하는 데 도움이 되기 때문에 기계 학습, 데이터 과학 및 인공 지능에서도 사용됩니다. Python은 웹 사이트에서 방대한 양의 데이터를 추출할 때 생명의 은인입니다. 사용자는 이 데이터를 이후에 가격 비교, 채용 공고, 연구 및 개발 등과 같은 다양한 실제 작업에서 사용할 수 있습니다.