Saat ini, tidak ada proyek yang dapat dilakukan tanpa analisis dan pemrosesan kata, dan kebetulan saja Python memiliki berbagai pustaka dan kerangka kerja untuk tugas-tugas NLP. Tugas bisa sepele: analisis sentimen teks, suasana hati, pengenalan entitas (NER) dan bot yang lebih menarik, perbandingan dialog dalam obrolan dukungan - untuk memantau apakah dukungan teknis atau skrip teks penjualan Anda harus dipantau, atau teks pasca-pemrosesan setelah SpeechToText .
Sejumlah besar alat tersedia untuk memecahkan masalah NLP. Berikut adalah daftar singkatnya:
Pidato, seperti yang Anda pahami, akan fokus pada yang terakhir, karena ini mencakup hampir semua hal yang dapat dilakukan perpustakaan di atas. Ada keduanya gratis pra - dilatih model dan dibayar, yang sangat khusus, misalnya untuk kesehatan .
Untuk menjalankan Spark NLP, Anda memerlukan Java 8 - ini diperlukan untuk kerangka kerja Apache Spark yang digunakan oleh Spark NLP. Bereksperimen di server atau mesin lokal membutuhkan minimal 16GB RAM. Lebih baik menginstalnya di beberapa distribusi Linux (kesulitan mungkin timbul di macOS), secara pribadi saya memilih instance Ubuntu di AWS.
apt-get -qy install openjdk-8
Anda juga perlu menginstal Python3 dan pustaka terkait
apt-get -qy install build-essential python3 python3-pip python3-dev gnupg2
pip install nlu==1.1.3
pip install pyspark==2.4.7
pip install spark-nlp==2.7.4
colab. Spark NLP (pipeline), pipe-, , : . , .
documentAssembler = DocumentAssembler() \
.setInputCol('text') \
.setOutputCol('document')
tokenizer = Tokenizer() \
.setInputCols(['document']) \
.setOutputCol('token')
embeddings = BertEmbeddings.pretrained(name='bert_base_cased', lang='en') \
.setInputCols(['document', 'token']) \
.setOutputCol('embeddings')
ner_model = NerDLModel.pretrained('ner_dl_bert', 'en') \
.setInputCols(['document', 'token', 'embeddings']) \
.setOutputCol('ner')
ner_converter = NerConverter() \
.setInputCols(['document', 'token', 'ner']) \
.setOutputCol('ner_chunk')
nlp_pipeline = Pipeline(stages=[
documentAssembler,
tokenizer,
embeddings,
ner_model,
ner_converter
])
documentAssembler - Document,
tokenizer -
embeddings -
ner_model - . : October 28, 1955 = DATE
ner_converter - October 28, 1955
, - - , Spark NLP, SparkNLP (johnsnowlabs) SparkNLP - , :
import nlu
pipeline = nlu.load('ner')
result = pipeline.predict(
text, output_level='document'
).to_dict(orient='records')
NER, .
Saya juga ingin mencatat bahwa kedua opsi untuk mendapatkan entitas bernama memerlukan beberapa waktu untuk menginisialisasi Apache Spark, memuat model pramuat dan membuat koneksi antara interpreter Python dan Spark melalui pyspark. Oleh karena itu, Anda tidak benar-benar ingin me-restart skrip dengan kode di atas 10-100 kali, Anda perlu menyediakan preloading dan cukup memproses teks dengan memanggil predict, dalam kasus saya, saya membuat inisialisasi pipeline yang saya butuhkan selama inisialisasi dari pekerja seledri.
#
pipeline_registry = PipelineRegistry()
def get_pipeline_registry():
pipeline_registry.register('sentiment', nlu.load('en.sentiment'))
pipeline_registry.register('ner', nlu.load('ner'))
pipeline_registry.register('stopwords', nlu.load('stopwords'))
pipeline_registry.register('stemmer', nlu.load('stemm'))
pipeline_registry.register('emotion', nlu.load('emotion'))
return pipeline_registry
@worker_process_init.connect
def init_worker(**kwargs):
logging.info("Initializing pipeline_factory...")
get_pipeline_registry()
Dengan cara ini, Anda dapat melakukan tugas NLP tanpa sakit otak dan dengan sedikit usaha.