Doğal dil işleme teknolojisi

Azure AI services
Azure Databricks
Azure HDInsight
Azure Synapse Analytics

Doğal dil işlemenin (NLP) birçok kullanımı vardır: yaklaşım analizi, konu algılama, dil algılama, anahtar tümcecik ayıklama ve belge kategorisi.

Özellikle, NLP kullanarak şunları yapabilirsiniz:

  • Belgeleri sınıflandırma. Örneğin, belgeleri hassas veya istenmeyen posta olarak etiketleyebilirsiniz.
  • Sonraki işlemleri veya aramaları yapın. Bu amaçlar için NLP çıkışını kullanabilirsiniz.
  • Belgede bulunan varlıkları tanımlayarak metni özetleyin.
  • Belgeleri anahtar sözcüklerle etiketleyin. NLP, anahtar sözcükler için tanımlanan varlıkları kullanabilir.
  • İçerik tabanlı arama ve alma işlemi yapın. Etiketleme, bu işlevi mümkün kılar.
  • Belgenin önemli konularını özetleyin. NLP, tanımlanan varlıkları konu başlıkları halinde birleştirebilir.
  • Belgeleri gezinti için kategorilere ayırın. Bu amaçla, NLP algılanan konuları kullanır.
  • Seçili konuya göre ilgili belgeleri numaralandır. Bu amaçla, NLP algılanan konuları kullanır.
  • Yaklaşım için puan metni. Bu işlevi kullanarak, bir belgenin pozitif veya negatif tonunu değerlendirebilirsiniz.

Apache®, Apache Spark ve alev logosu, Apache Software Foundation'ın Birleşik Devletler ve/veya diğer ülkelerdeki kayıtlı ticari markaları veya ticari markalarıdır. Bu işaretlerin kullanılması Apache Software Foundation tarafından onaylanmamaktadır.

Olası kullanım örnekleri

Özel NLP'den yararlanabilecek iş senaryoları şunlardır:

  • Finans, sağlık, perakende, kamu ve diğer sektörlerde el yazısı veya makine tarafından oluşturulan belgeler için belge zekası.
  • Ad varlığı tanıma (NER), sınıflandırma, özetleme ve ilişki ayıklama gibi metin işleme için endüstriden bağımsız NLP görevleri. Bu görevler metin ve yapılandırılmamış veriler gibi belge bilgilerini alma, tanımlama ve analiz etme sürecini otomatikleştirir. Bu görevlere örnek olarak risk katmanlama modelleri, ontoloji sınıflandırması ve perakende özetlemeleri verilebilir.
  • Anlamsal arama için bilgi alma ve bilgi grafı oluşturma. Bu işlevsellik, ilaç bulmayı ve klinik denemeleri destekleyen tıbbi bilgi grafları oluşturmayı mümkün kılar.
  • Perakende, finans, seyahat ve diğer sektörlerde müşteriye yönelik uygulamalarda konuşma yapay zekası sistemleri için metin çevirisi.

Özelleştirilmiş NLP çerçevesi olarak Apache Spark

Apache Spark, büyük veri analizi uygulamalarının performansını artırmak için bellek içi işlemeyi destekleyen paralel bir işleme çerçevesidir. Azure Synapse Analytics, Azure HDInsight ve Azure Databricks Spark'a erişim sağlar ve işlem gücünden yararlanır.

Özelleştirilmiş NLP iş yükleri için Spark NLP, büyük miktarda metni işlemek için verimli bir çerçeve görevi görür. Bu açık kaynak NLP kitaplığı spaCy, NLTK, Stanford CoreNLP ve Open NLP gibi geleneksel NLP kitaplıklarının tüm işlevlerini sunan Python, Java ve Scala kitaplıkları sağlar. Spark NLP ayrıca yazım denetimi, yaklaşım analizi ve belge sınıflandırması gibi işlevler de sunar. Spark NLP, son derece yüksek doğruluk, hız ve ölçeklenebilirlik sağlayarak önceki çabaları geliştirir.

Diagram that shows areas of N L P functionality like entity recognition. Various boxes list N L P annotators, models, and supported languages.

Son genel karşılaştırmalar Spark NLP'yi spaCy'den 38 ve 80 kat daha hızlı olarak gösterir ve özel modelleri eğitme için karşılaştırılabilir doğruluk sunar. Spark NLP, dağıtılmış Spark kümesi kullanabilen tek açık kaynak kitaplıktır. Spark NLP, spark ML'nin doğrudan veri çerçeveleri üzerinde çalışan yerel bir uzantısıdır. Sonuç olarak, bir kümedeki hız artışları başka bir performans artışı sırasına neden olabilir. Her Spark NLP işlem hattı bir Spark ML işlem hattı olduğundan, Spark NLP belge sınıflandırması, risk tahmini ve öneren işlem hatları gibi birleşik NLP ve makine öğrenmesi işlem hatları oluşturmak için çok uygundur.

Spark NLP, mükemmel performansın yanı sıra, artan sayıda NLP görevi için son derece yüksek doğruluk sunar. Spark NLP ekibi düzenli olarak en son ilgili akademik makaleleri okur ve en son modellerini uygular. Son iki-üç yılda en iyi performans gösteren modeller derin öğrenmeyi kullanmıştı. Kitaplık, adlandırılmış varlık tanıma, belge sınıflandırması, yaklaşım ve duygu algılama ve cümle algılama için önceden oluşturulmuş derin öğrenme modelleriyle birlikte gelir. Kitaplık ayrıca sözcük, öbek, cümle ve belge ekleme desteği içeren önceden eğitilmiş onlarca dil modeli içerir.

Kitaplık, CPU'lar, GPU'lar ve en son Intel Xeon yongaları için iyileştirilmiş derlemelere sahiptir. Spark kümelerinden yararlanmak için eğitim ve çıkarım işlemlerini ölçeklendikleyebilirsiniz. Bu süreçler tüm popüler analiz platformlarında üretimde çalıştırılabilir.

Zorluklar

  • Serbest biçimli metin belgeleri koleksiyonunun işlenmesi için önemli miktarda hesaplama kaynağı gerekir. İşleme de yoğun zaman alır. Bu tür işlemler genellikle GPU işlem dağıtımlarını içerir.
  • Standartlaştırılmış belge biçimi olmadan, bir belgeden belirli olguları ayıklamak için serbest biçimli metin işleme kullandığınızda tutarlı olarak doğru sonuçlar elde etmek zor olabilir. Örneğin, bir faturanın metin gösterimini düşünün; çeşitli satıcılardan gelen faturaların fatura numarasını ve tarihini doğru ayıklayan bir işlem oluşturmak zor olabilir.

Anahtar seçim ölçütleri

Azure'da Azure Databricks, Azure Synapse Analytics ve Azure HDInsight gibi Spark hizmetleri, Spark NLP ile kullandığınızda NLP işlevselliği sağlar. Azure Bilişsel Hizmetler, NLP işlevselliği için bir diğer seçenektir. Hangi hizmetin kullanılacağına karar vermek için şu soruları göz önünde bulundurun:

  • Önceden oluşturulmuş veya önceden eğitilmiş modeller kullanmak istiyor musunuz? Evet ise Azure Bilişsel Hizmetler'in sunduğu API'leri kullanmayı göz önünde bulundurun. Alternatif olarak Spark NLP aracılığıyla istediğiniz modeli indirebilirsiniz.

  • Özel modelleri büyük bir metin verisi kümesine karşı eğitmek zorunda mısınız? Evet ise Spark NLP ile Azure Databricks, Azure Synapse Analytics veya Azure HDInsight kullanmayı göz önünde bulundurun.

  • Belirteç oluşturma, kök oluşturma, lemmatizasyon ve terim sıklığı/ters belge sıklığı (TF/IDF) gibi düşük düzey NLP özelliklerine mi ihtiyacınız var? Evet ise Spark NLP ile Azure Databricks, Azure Synapse Analytics veya Azure HDInsight kullanmayı göz önünde bulundurun. Alternatif olarak, seçtiğiniz işleme aracında bir açık kaynak yazılım kitaplığı da kullanabilirsiniz.

  • Varlık ve amaç belirleme, konu algılama, yazım denetimi veya yaklaşım analizi gibi basit, üst düzey NLP özelliklerine mi ihtiyacınız var? Evet ise Bilişsel Hizmetler'in sunduğu API'leri kullanmayı göz önünde bulundurun. Alternatif olarak Spark NLP aracılığıyla istediğiniz modeli indirebilirsiniz.

Yetenek matrisi

Aşağıdaki tablolarda NLP hizmetlerinin özelliklerindeki temel farklar özetlenmektedir.

Genel özellikler

Özellik Spark NLP ile Spark hizmeti (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) Azure Bilişsel Hizmetler
Hizmet olarak önceden eğitilmiş modeller sağlar Yes Yes
REST API Yes Yes
Programlanabilirlik Python, Scala Desteklenen diller için bkz. Ek Kaynaklar
Büyük veri kümelerinin ve büyük belgelerin işlenmesini destekler Yes Hayır

Alt düzey NLP özellikleri

Açıklama ekleyicilerin özelliği Spark NLP ile Spark hizmeti (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) Azure Bilişsel Hizmetler
Cümle algılayıcısı Yes Hayır
Derin cümle algılayıcısı Yes Yes
Belirteç Oluşturucu Yes Yes
N-gram oluşturucu Yes Hayır
Sözcük segmentasyonu Yes Yes
Stemmer Yes Hayır
Lemmatizer Yes Hayır
Konuşma bölümü etiketleme Yes Hayır
Bağımlılık ayrıştırıcısı Yes Hayır
Çeviri Yes Hayır
Stopword temizleyici Yes Hayır
Yazım düzeltmesi Yes Hayır
Normalizer Yes Yes
Metin eşleştirici Yes Hayır
TF/IDF Yes Hayır
Normal ifade eşleştiricisi Yes Language Understanding Service'e (LUIS) katıştırılmış. LUIS'in yerini alan Konuşma Dili Anlama 'da (CLU) desteklenmez.
Tarih eşleştirici Yes DateTime tanıyıcıları aracılığıyla LUIS ve CLU'da mümkün
Öbekleyici Yes Hayır

Üst düzey NLP özellikleri

Özellik Spark NLP ile Spark hizmeti (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) Azure Bilişsel Hizmetler
Yazım denetimi Yes Hayır
Özetleme Yes Yes
Soru cevaplama Yes Yes
Yaklaşım algılama Yes Yes
Duygu algılama Yes Fikir madenciliği destekler
Belirteç sınıflandırması Yes Evet, özel modeller aracılığıyla
Metin sınıflandırması Yes Evet, özel modeller aracılığıyla
Metin gösterimi Yes Hayır
NER Yes Evet, metin analizi bir dizi NER sağlar ve özel modeller varlık tanımadadır
Varlık tanıma Yes Evet, özel modeller aracılığıyla
Dil algılama Yes Yes
İngilizcenin yanı sıra dilleri destekler Evet, 200'den fazla dili destekler Evet, 97'den fazla dili destekler

Azure'da Spark NLP'lerini ayarlama

Spark NLP'yi yüklemek için aşağıdaki kodu kullanın, ancak değerini en son sürüm numarasıyla değiştirin <version> . Daha fazla bilgi için Spark NLP belgelerine bakın.

# Install Spark NLP from PyPI.
pip install spark-nlp==<version>

# Install Spark NLP from Anacodna or Conda.
conda install -c johnsnowlabs spark-nlp

# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP as an external JAR after compiling and building Spark NLP by using sbt assembly.
spark-shell --jars spark-nlp-assembly-3 <version>.jar

NLP işlem hatları geliştirme

Bir NLP işlem hattının yürütme sırası için Spark NLP, geleneksel Spark ML makine öğrenmesi modelleri ile aynı geliştirme kavramını izler. Ancak Spark NLP, NLP tekniklerini uygular.

Diagram that shows N L P pipeline stages, such as document assembly, sentence detection, tokenization, normalization, and word embedding.

Spark NLP işlem hattının temel bileşenleri şunlardır:

  • DocumentAssembler: Verileri Spark NLP'nin işleyebileceği bir biçime değiştirerek hazırlayan bir transformatör. Bu aşama, her Spark NLP işlem hattının giriş noktasıdır. DocumentAssembler bir sütunu veya bir StringArray[String]öğesini okuyabilir. Metni önceden işlemek için kullanabilirsiniz setCleanupMode . Bu mod varsayılan olarak kapalıdır.

  • SentenceDetector: Verilen yaklaşımı kullanarak cümle sınırlarını algılayan bir açıklama. Bu açıklama bir içindeki Arrayayıklanan tümceleri döndürebilir. Ayrıca true olarak ayarlarsanız explodeSentences her cümleyi farklı bir satırda döndürebilir.

  • Belirteç Oluşturucu: Ham metni belirteçlere veya sözcükler, sayılar ve simgeler gibi birimlere ayıran ve belirteçleri bir yapıda döndüren bir TokenizedSentence açıklama. Bu sınıf uygun değil. Belirteci sığdırırsanız iç, RuleFactory belirteç oluşturma kurallarını ayarlamak için giriş yapılandırmasını kullanır. Belirteç oluşturucu, belirteçleri tanımlamak için açık standartları kullanır. Varsayılan ayarlar gereksinimlerinizi karşılamıyorsa Belirteç oluşturucuyu özelleştirmek için kurallar ekleyebilirsiniz.

  • Normalleştirici: Belirteçleri temizleyen bir açıklama. Normalleştirici için saplar gerekir. Normalleştirici, metni dönüştürmek ve kirli karakterleri kaldırmak için normal ifadeleri ve sözlüğü kullanır.

  • WordEmbeddings: Belirteçleri vektörlerle eşleyen açıklama ek açıklamalarını arayın. Eklemeler için özel bir belirteç arama sözlüğü belirtmek için kullanabilirsiniz setStoragePath . Sözlüğünüzün her satırının boşluklarla ayrılmış bir belirteç ve vektör gösterimi içermesi gerekir. Sözlükte belirteç bulunmazsa, sonuç aynı boyutta sıfır vektördür.

Spark NLP, MLflow'un yerel olarak desteklediği Spark MLlib işlem hatlarını kullanır. MLflow , makine öğrenmesi yaşam döngüsü için açık kaynak bir platformdur. Bileşenleri şunlardır:

  • Mlflow İzleme: Denemeleri kaydeder ve sonuçları sorgulamak için bir yol sağlar.
  • MLflow Projeleri: Veri bilimi kodunun herhangi bir platformda çalıştırılmasını mümkün kılar.
  • MLflow Modelleri: Modelleri farklı ortamlara dağıtır.
  • Model Kayıt Defteri: Merkezi bir depoda depoladığınız modelleri yönetir.

MLflow, Azure Databricks ile tümleşiktir. Denemelerinizi izlemek ve yönetmek için MLflow'u başka bir Spark tabanlı ortama yükleyebilirsiniz. Modelleri üretim amacıyla kullanılabilir hale getirmek için MLflow Model Kayıt Defteri'ni de kullanabilirsiniz.

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazarlar:

Sonraki adımlar