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.
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.
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
String
Array[String]
öğesini okuyabilir. Metni önceden işlemek için kullanabilirsinizsetCleanupMode
. 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
Array
ayıklanan tümceleri döndürebilir. Ayrıca true olarak ayarlarsanızexplodeSentences
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:
- Moritz Steller | Üst Düzey Bulut Çözümü Mimarı
- Zoiner Tejada | CEO ve Mimar
Sonraki adımlar
Spark NLP belgeleri:
Azure bileşenleri:
Kaynakları öğrenin:
İlgili kaynaklar
- Azure'da büyük ölçekli özel doğal dil işleme
- Microsoft bilişsel hizmetler teknolojisi seçme
- Microsoft'un makine öğrenmesi ürünlerini ve teknolojilerini karşılaştırma
- MLflow ve Azure Machine Learning
- Azure Bilişsel Arama'de görüntü ve doğal dil işleme ile yapay zeka zenginleştirmesi
- Görüntü ve doğal dil işleme kullanarak neredeyse gerçek zamanlı analizlerle haber akışlarını analiz etme
- Derin öğrenme kullanarak NLP ile içerik etiketleri önerin