SocialNLPタスク用のトランスベースのライブラリ。
現在サポートしています:
| タスク | 言語 |
|---|---|
| 感情分析 | es、en、it、pt |
| ヘイトスピーチ検出 | es、en、it、pt |
| 皮肉な検出 | es、en、it、pt |
| 感情分析 | es、en、it、pt |
| NER&POSタグ付け | es、en |
| 文脈化されたヘイトスピーチ検出 | es |
| 標的感情分析 | es |
pip install pysentimientoして、使用を開始します。
from pysentimiento import create_analyzer
analyzer = create_analyzer ( task = "sentiment" , lang = "es" )
analyzer . predict ( "Qué gran jugador es Messi" )
# returns AnalyzerOutput(output=POS, probas={POS: 0.998, NEG: 0.002, NEU: 0.000})
analyzer . predict ( "Esto es pésimo" )
# returns AnalyzerOutput(output=NEG, probas={NEG: 0.999, POS: 0.001, NEU: 0.000})
analyzer . predict ( "Qué es esto?" )
# returns AnalyzerOutput(output=NEU, probas={NEU: 0.993, NEG: 0.005, POS: 0.002})
analyzer . predict ( "jejeje no te creo mucho" )
# AnalyzerOutput(output=NEG, probas={NEG: 0.587, NEU: 0.408, POS: 0.005})
"""
Emotion Analysis in English
"""
emotion_analyzer = create_analyzer ( task = "emotion" , lang = "en" )
emotion_analyzer . predict ( "yayyy" )
# returns AnalyzerOutput(output=joy, probas={joy: 0.723, others: 0.198, surprise: 0.038, disgust: 0.011, sadness: 0.011, fear: 0.010, anger: 0.009})
emotion_analyzer . predict ( "fuck off" )
# returns AnalyzerOutput(output=anger, probas={anger: 0.798, surprise: 0.055, fear: 0.040, disgust: 0.036, joy: 0.028, others: 0.023, sadness: 0.019})
"""
Hate Speech (misogyny & racism)
"""
hate_speech_analyzer = create_analyzer ( task = "hate_speech" , lang = "es" )
hate_speech_analyzer . predict ( "Esto es una mierda pero no es odio" )
# returns AnalyzerOutput(output=[], probas={hateful: 0.022, targeted: 0.009, aggressive: 0.018})
hate_speech_analyzer . predict ( "Esto es odio porque los inmigrantes deben ser aniquilados" )
# returns AnalyzerOutput(output=['hateful'], probas={hateful: 0.835, targeted: 0.008, aggressive: 0.476})
hate_speech_analyzer . predict ( "Vaya guarra barata y de poca monta es XXXX!" )
# returns AnalyzerOutput(output=['hateful', 'targeted', 'aggressive'], probas={hateful: 0.987, targeted: 0.978, aggressive: 0.969})サポートされているタスクと言語の詳細、および各ベンチマークモデルの報告されたパフォーマンスについては、タスクを参照してください。
また、各言語にpysentimiento使用する方法の例でこれらのノートブックを確認してください。
pysentimiento 、変圧器ベースのモデルを使用したツイート分類に特別に適したツイートプリプロセッサを備えています。
from pysentimiento . preprocessing import preprocess_tweet
# Replaces user handles and URLs by special tokens
preprocess_tweet ( "@perezjotaeme debería cambiar esto http://bit.ly/sarasa" ) # "@usuario debería cambiar esto url"
# Shortens repeated characters
preprocess_tweet ( "no entiendo naaaaaaaadaaaaaaaa" , shorten = 2 ) # "no entiendo naadaa"
# Normalizes laughters
preprocess_tweet ( "jajajajaajjajaajajaja no lo puedo creer ajajaj" ) # "jaja no lo puedo creer jaja"
# Handles hashtags
preprocess_tweet ( "esto es #UnaGenialidad" )
# "esto es una genialidad"
# Handles emojis
preprocess_tweet ( "??" , lang = "en" )
# 'emoji party popper emoji emoji party popper emoji' git clone https://github.com/pysentimiento/pysentimiento
pip install poetry
poetry shell
poetry install
モデルをトレーニングする方法の詳細については、train.mdを確認してください
注:データセットにアクセスする必要がありますが、当面は公開されていません。それらにアクセスするためのメールを送信してください。
huggingfaceドキュメントで「モデル共有とアップロード」の命令を確認してください。
pysentimientoはオープンソースライブラリです。ただし、モデルはサードパーティのデータセットでトレーニングされており、それぞれのライセンスの対象となることに注意してください。
TASSデータセットライセンス(スペイン語でのセンチメント分析のライセンス、スペイン語と英語の感情分析)
Semeval 2017データセットライセンス(英語のセンチメント分析)
linceデータセット(ner&posタグ付けのライセンス)
リポジトリの問題トラッカーを使用してバグを指摘し、提案をしてください(新しいモデル、別のデータセット、他の言語を使用するなど)
作品でpysentimientoを使用している場合は、この論文を引用してください
@misc { perez2021pysentimiento ,
title = { pysentimiento: A Python Toolkit for Opinion Mining and Social NLP tasks } ,
author = { Juan Manuel Pérez and Mariela Rajngewerc and Juan Carlos Giudici and Damián A. Furman and Franco Luque and Laura Alonso Alemany and María Vanina Martínez } ,
year = { 2023 } ,
eprint = { 2106.09462 } ,a
archivePrefix = { arXiv } ,
primaryClass = { cs.CL }
}また、Plecceは、使用する特定のモデルの関連する事前訓練モデルとデータセットを引用します。詳細については、参照を確認してください。