Zephyrnet Logosu

Metinden Bilgiye: Bilgi Çıkarma Boru Hattı

Tarih:

bilgi çıkarma

Üzerinde çalıştığım son projemi sunmaktan büyük heyecan duyuyorum. Eğer yazılarımı takip ediyorsanız doğal dil işleme ile bilgi grafiklerini birleştirme konusunda tutkulu olduğumu biliyorsunuzdur. Bu blog yazısında, bilgi çıkarma veri hattı uygulamamı sunacağım. Daha sonra, NLP ve grafiklerin kombinasyonunu neden açıklanabilir yapay zekaya giden yollardan biri olarak gördüğümü de açıklayacağım.

Bu kapsamlı eğitim içeriği sizin için yararlıysa şunları yapabilirsiniz: AI araştırma e-posta listemize abone olun yeni materyal çıkardığımızda uyarılmak. 

Bilgi çıkarma boru hattı

Bilgi çıkarma hattı tam olarak nedir? Basit bir ifadeyle bilgi çıkarımı, metin gibi yapılandırılmamış verilerden yapılandırılmış bilgi çıkarma görevidir.

IE boru hattını uygulamamdaki adımlar. Yazara göre resim

Bilgi çıkarma hattını uygulamam dört bölümden oluşuyor. İlk adımda giriş metnini bir çekirdek referans çözümleme modeli üzerinden çalıştırıyoruz. Çekirdek referans çözümü, belirli bir varlığa atıfta bulunan tüm ifadeleri bulma görevidir. Basitçe söylemek gerekirse, tüm zamirleri atıfta bulunulan varlığa bağlar. Bu adım tamamlandıktan sonra metni cümlelere böler ve noktalama işaretlerini kaldırır. Adlandırılmış varlık bağlantısı için kullanılan belirli ML modelinin, noktalama işaretlerini ilk kez kaldırdığımızda daha iyi çalıştığını fark ettim. İşlem hattının adlandırılmış varlık bağlayan kısmında, bahsedilen tüm varlıkları çıkarmaya ve bunları bir hedef bilgi tabanına bağlamaya çalışıyoruz. Bu durumda hedef bilgi tabanı Vikipedi'dir. Adlandırılmış varlık bağlantısı faydalıdır çünkü aynı zamanda büyük bir sorun olabilecek varlık belirsizliğinin giderilmesiyle de ilgilenir.

Bahsedilen varlıkları çıkardıktan sonra IE boru hattı, metnin bağlamına dayalı olarak anlamlı varlıklar arasındaki ilişkileri çıkarmaya çalışır. IE boru hattı sonuçları varlıklar ve bunların ilişkileridir, dolayısıyla çıktıyı depolamak için bir grafik veritabanı kullanmak mantıklıdır. IE bilgilerinin nasıl kaydedileceğini göstereceğim neo4j.

IE boru hattında size yol göstermek için Wikipedia'dan aşağıdaki alıntıyı kullanacağım.

Elon Musk bir iş adamı, endüstriyel tasarımcı ve mühendistir. SpaceX'in kurucusu, CEO'su, CTO'su ve baş tasarımcısıdır. Aynı zamanda Tesla, Inc.'in ilk yatırımcısı, CEO'su ve ürün mimarıdır. Aynı zamanda The Boring Company'nin kurucusu ve Neuralink'in kurucu ortağıdır. Bir sentilyoner olan Musk, Ocak 2021'de Jeff Bezos'u geride bırakarak 185 milyar dolarlık tahmini net servetiyle dünyanın en zengin insanı oldu. Musk, Kanadalı bir anne ve Güney Afrikalı bir babanın çocuğu olarak dünyaya geldi ve Güney Afrika'nın Pretoria kentinde büyüdü. Queen's Üniversitesi'ne gitmek üzere 17 yaşında Kanada'ya taşınmadan önce kısa bir süre Pretoria Üniversitesi'ne gitti. İki yıl sonra Pensilvanya Üniversitesi'ne transfer oldu ve burada ekonomi ve fizik alanında çift lisans diploması aldı. 1995 yılında Stanford Üniversitesi'ne gitmek için Kaliforniya'ya taşındı, ancak bunun yerine iş kariyerine devam etmeye karar verdi. Kardeşi Kimbal Musk ile birlikte Zip2 adlı bir web yazılım şirketi kurmaya devam etti.

Metin kopyalandı https://en.wikipedia.org/wiki/Elon_Musk ve altında mevcuttur CC BY-SA 3.0 lisansı.

Adım 1: Koreferans çözünürlüğü

Belirtildiği gibi, çekirdek referans çözümü metinde belirli bir varlığa atıfta bulunan tüm ifadeleri bulmaya çalışır. Uygulamamda şunu kullandım: Huggingface'ten Neuralcoref modeli üstünde çalışan SpaCy çerçeve. Neuralcoref modelinin varsayılan parametrelerini kullandım. Bu arada fark ettiğim bir şey de Neuralcoref modelinin konum zamirleriyle iyi çalışmadığıydı. Ayrıca birinden küçük bir iyileştirme kodu ödünç aldım. GitHub sorunları. Çekirdek referans çözümleme kısmının kodu aşağıdaki gibidir:

import spacy
import neuralcoref # Load SpaCy
nlp = spacy.load('en')
# Add neural coref to SpaCy's pipe
neuralcoref.add_to_pipe(nlp) def coref_resolution(text): """Function that executes coreference resolution on a given text""" doc = nlp(text) # fetches tokens with whitespaces from spacy document tok_list = list(token.text_with_ws for token in doc) for cluster in doc._.coref_clusters: # get tokens from representative cluster name cluster_main_words = set(cluster.main.text.split(' ')) for coref in cluster: if coref != cluster.main: # if coreference element is not the representative element of that cluster if coref.text != cluster.main.text and bool(set(coref.text.split(' ')).intersection(cluster_main_words)) == False: # if coreference element text and representative element text are not equal and none of the coreference element words are in representative element. This was done to handle nested coreference scenarios tok_list[coref.start] = cluster.main.text + doc[coref.end-1].whitespace_ for i in range(coref.start+1, coref.end): tok_list[i] = "" return "".join(tok_list)

Örnek metnimizi coref_Definition fonksiyonu üzerinden çalıştırırsak aşağıdaki çıktıyı elde ederiz:

Elon Musk bir iş adamı, endüstriyel tasarımcı ve mühendistir. 
Elon Musk, SpaceX'in kurucusu, CEO'su, CTO'su ve baş tasarımcısıdır.
Elon Musk aynı zamanda Tesla Inc.'in ilk yatırımcısı, CEO'su ve ürün mimarıdır. Elon Musk aynı zamanda The Boring Company'nin kurucusu ve Neuralink'in kurucu ortağıdır. Bir sentilyoner olan Musk, Ocak 2021'de Jeff Bezos'u geride bırakarak 185 milyar dolarlık tahmini net servetiyle dünyanın en zengin insanı oldu. Musk, Kanadalı bir anne ve Güney Afrikalı bir babanın çocuğu olarak dünyaya geldi ve Güney Afrika'nın Pretoria kentinde büyüdü. Elon Musk, Queen's Üniversitesi'ne gitmek üzere 17 yaşında Kanada'ya taşınmadan önce kısa bir süre Pretoria Üniversitesi'ne gitti. Elon Musk, iki yıl sonra Pensilvanya Üniversitesi'ne transfer oldu ve burada Elon Musk, ekonomi ve fizik alanında ikili lisans diploması aldı. Elon Musk, 1995 yılında Stanford Üniversitesi'ne gitmek için Kaliforniya'ya taşındı ancak bunun yerine iş kariyerine devam etmeye karar verdi. Elon Musk, Elon Musk'un kardeşi Kimbal Musk ile birlikte Zip2 adlı bir web yazılım şirketi kurmaya devam etti.

Bu örnekte gelişmiş çekirdek referans çözümleme teknikleri gerekli değildir. Neuralcoref modeli, "He" zamirlerinden birkaçını "Elon Musk" olarak değiştirdi. Çok basit görünse de bu, IE boru hattımızın genel verimliliğini artıracak önemli bir adımdır.

Adım 2: Adlandırılmış Varlık Bağlantısı

Yakın zamanda, kullanarak bir blog yazısı yayınladım. Bilgi grafiği oluşturmak için Adlandırılmış Varlık Bağlantısı. Burada farklı isimli bir varlık bağlama modeli kullanmak istedim. İlk önce kullanmayı denedim Facebook BLINK modeli, ancak dizüstü bilgisayarımda çalışmayacağını hemen fark ettim. En az 50 GB boş alana ihtiyacı var ki bu başlı başına büyük bir sorun değil ama aynı zamanda 32 GB RAM gerektiriyor. Dizüstü bilgisayarımda yalnızca 16 GB RAM var ve çalışmak için hala üretim hattının diğer bölümlerine ihtiyacımız var. Bu yüzden eski güzel olanı kullanmaya geri döndüm Wikiifier API'sı, bunun yararlı olduğu zaten gösterilmiştir. Ve tamamen ücretsizdir. API hakkında daha fazla bilgi edinmek istiyorsanız önceki blog gönderime veya resmi belgelere bakın.

Giriş metnimizi Wikiifier API'si aracılığıyla çalıştırmadan önce metni cümlelere bölüp noktalama işaretlerini kaldıracağız. Genel olarak bu adımın kodu aşağıdaki gibidir:

import urllib
from string import punctuation
import nltk ENTITY_TYPES = ["human", "person", "company", "enterprise", "business", "geographic region", "human settlement", "geographic entity", "territorial entity type", "organization"] def wikifier(text, lang="en", threshold=0.8): """Function that fetches entity linking results from wikifier.com API""" # Prepare the URL. data = urllib.parse.urlencode([ ("text", text), ("lang", lang), ("userKey", "tgbdmkpmkluegqfbawcwjywieevmza"), ("pageRankSqThreshold", "%g" % threshold), ("applyPageRankSqThreshold", "true"), ("nTopDfValuesToIgnore", "100"), ("nWordsToIgnoreFromList", "100"), ("wikiDataClasses", "true"), ("wikiDataClassIds", "false"), ("support", "true"), ("ranges", "false"), ("minLinkFrequency", "2"), ("includeCosines", "false"), ("maxMentionEntropy", "3") ]) url = "http://www.wikifier.org/annotate-article" # Call the Wikifier and read the response. req = urllib.request.Request(url, data=data.encode("utf8"), method="POST") with urllib.request.urlopen(req, timeout=60) as f: response = f.read() response = json.loads(response.decode("utf8")) # Output the annotations. results = list() for annotation in response["annotations"]: # Filter out desired entity classes if ('wikiDataClasses' in annotation) and (any([el['enLabel'] in ENTITY_TYPES for el in annotation['wikiDataClasses']])): # Specify entity label if any([el['enLabel'] in ["human", "person"] for el in annotation['wikiDataClasses']]): label = 'Person' elif any([el['enLabel'] in ["company", "enterprise", "business", "organization"] for el in annotation['wikiDataClasses']]): label = 'Organization' elif any([el['enLabel'] in ["geographic region", "human settlement", "geographic entity", "territorial entity type"] for el in annotation['wikiDataClasses']]): label = 'Location' else: label = None results.append({'title': annotation['title'], 'wikiId': annotation['wikiDataItemId'], 'label': label, 'characters': [(el['chFrom'], el['chTo']) for el in annotation['support']]}) return results

Wikiifier API'sinin bir varlığın ait olduğu tüm sınıfları döndürdüğünü söylemeyi unuttum. Şuna bakar: ÖRNEĞİ ve SUBCLASS_OF sınıflar ve sınıf hiyerarşisi boyunca tüm yolu kat eder. Varlıkları bir kişiye, kuruluşa veya konuma ait kategorilerle filtrelemeye karar verdim. Örnek metnimizi işlem hattının Adlandırılmış Varlık Bağlantısı kısmı üzerinden çalıştırırsak aşağıdaki çıktıyı alırız.

Vikileştirme sürecinin güzel bir yanı da varlıklar için ilgili VikiVeri kimliklerini başlıklarıyla birlikte almamızdır. WikiData kimliklerine sahip olmak, varlık belirsizliğini giderme sorununu çözer. O halde bir varlığın Vikipedi'de mevcut olmaması durumunda ne olacağını merak edebilirsiniz. Bu durumda ne yazık ki Wikiifier onu tanımayacaktır. Doğru hatırlamıyorsam Vikipedi'de 100 milyondan fazla varlık bulunduğundan bu konuda çok fazla endişelenmem.

Sonuçlara yakından bakarsanız Pretoria'nın yanlışlıkla bir Organizasyon olarak sınıflandırıldığını fark edeceksiniz. Bu sorunu çözmeye çalıştım ancak Vikipedi sınıf hiyerarşisi karmaşıktır ve genellikle beş veya altı atlamadan oluşur. Eğer orada Wiki sınıfı uzmanları varsa, tavsiyelerinizi memnuniyetle dinlerim.

3. Adım: İlişki çıkarma

Bu noktaya kadar tüm kavramları zaten sundum. Daha önce hiç ilişki çıkarma konusuna girmemiştim. Şu ana kadar sadece birlikte oluşum ağlarıyla oynadık. Bu nedenle, bir çalışma ilişkisi çıkarma sürecini sunmaktan heyecan duyuyorum. İyi bir iş çıkarabilecek açık kaynaklı modelleri aramak için çok zaman harcıyorum. rastlamak beni çok mutlu etti OpenNRE proje. Wiki80 veya Tacred veri kümesi üzerinde eğitilmiş beş açık kaynaklı ilişki çıkarma modelini içerir. Wiki'deki her şeyin büyük bir hayranı olduğum için Wiki80 veri kümesini kullanmaya karar verdim. Wiki80 veri kümesi üzerinde eğitilen modeller 80 ilişki türü sonucunu çıkarabilir. Tacred veri kümesinde eğitilen modelleri denemedim. Bunu kendi başına deneyebilirsin. IE boru hattı uygulamasında şunu kullandım: wiki80_bert_softmax modeli. Adından da anlaşılacağı gibi kaputun altındaki BERT kodlayıcıyı kullanıyor. Kesin olan bir şey var. GPU'nuz yoksa iyi vakit geçiremezsiniz.

OpenNRE kütüphanesindeki örnek bir ilişki çıkarma çağrısına bakarsak, bunun yalnızca ilişkileri çıkardığını ve adlandırılmış varlıkları çıkarmaya çalışmadığını fark edeceğiz. Bir çift varlık sağlamalıyız. h ve t parametreler ve daha sonra model bir ilişki çıkarmaya çalışır.

model.infer({'text': 'O, Máel Dúin mac Máele Fithrich'in oğluydu ve yüce kral Áed Uaridnach'ın torunuydu (612'de öldü).', 'h': {'pos': (18, 46) }, 't': {'konum': (78, 91)}})
('baba', 0.5108704566955566)

Sonuçlar, tahminin güven düzeyinin yanı sıra bir ilişki tipini de ortaya çıkarır. İlişki çıkarma için o kadar da kusursuz olmayan kodum şuna benziyor:

# First get all the entities in the sentence
entities = wikifier(sentence, threshold=entities_threshold)
# Iterate over every permutation pair of entities
for permutation in itertools.permutations(entities, 2): for source in permutation[0]['characters']: for target in permutation[1]['characters']: # Relationship extraction with OpenNRE data = relation_model.infer( {'text': sentence, 'h': {'pos': , source[1] + 1]}, 't': {'pos': [target[0], target[1] + 1]}}) if data[1] > relation_threshold: relations_list.append( {'source': permutation[0]['title'], 'target': permutation[1]['title'], 'type': data[0]})

Adlandırılmış varlık bağlantısının sonuçlarını ilişki çıkarma sürecine girdi olarak kullanmalıyız. Bir varlık çiftinin her permütasyonunu yineliyoruz ve bir ilişki çıkarmaya çalışıyoruz. Kodda görebileceğiniz gibi, küçük bir güven düzeyine sahip ilişkileri atlamak için bir ilişki_threshold parametremiz de var. Daha sonra neden varlık kombinasyonlarını değil de permütasyonları kullandığımızı göreceksiniz.

Dolayısıyla, örnek metnimizi ilişki çıkarma hattı üzerinden çalıştırırsak sonuçlar aşağıdaki gibidir:

İlişkiyi çıkarmak, üstesinden gelinmesi zor bir sorundur, bu nedenle mükemmel sonuçlar beklemeyin. Bu IE boru hattının, mevcut bazı ticari çözümlerden daha iyi olmasa da, aynı şekilde çalıştığını söylemeliyim. Ve tabii ki diğer ticari çözümler çok daha iyi.

4. Adım: Bilgi grafiği

Varlıklar ve onların ilişkileriyle uğraştığımız için, sonuçları yalnızca bir grafik veritabanında saklamak mantıklı olur. kullandım neo4j benim örneğimde.

Yazara göre resim

Hatırlayın, kombinasyonlar yerine varlık çiftlerinin tüm permütasyonları arasında bir ilişki çıkarmaya çalışacağımızı söylemiştim. Tablo sonuçlarına bakıldığında bunun nedenini anlamak daha zor olacaktır. Bir grafik görselleştirmesinde, çoğu ilişkinin her iki yönde de çıkarıldığı halde bunun her durumda doğru olmadığını gözlemlemek kolaydır. Örneğin Elon Musk ile Pensilvanya Üniversitesi arasındaki iş yeri ilişkisinin yalnızca tek yönde olduğu varsayılmaktadır. Bu bizi OpenNRE modelinin başka bir eksikliğine getiriyor. İlişkinin yönü olmasını istediğimiz kadar kesin değildir.

IE boru hattının pratik bir örneği

Eliniz boş bırakmamak için IE uygulamamı projelerinizde nasıl kullanabileceğinizi göstereceğim. IE boru hattını şu şekilde çalıştıracağız: BBC Haber Veri Kümesi Kaggle'da bulundu. IE boru hattı uygulamasının en zor kısmı tüm bağımlılıkları kurmaktı. Zihinsel akıl sağlığınızı korumanızı istiyorum, bu yüzden kullanabileceğiniz bir liman işçisi görüntüsü oluşturdum. Çalıştırmak ve çalıştırmak için aşağıdaki komutu çalıştırın:

liman işçisi çalıştırması -p 5000:5000 tomasonjo/trinityie

İlk çalıştırmada OpenNRE modellerinin indirilmesi gerekmektedir, bu nedenle kesinlikle kullanmayınız. -rm seçenek. Projede bazı değişiklikler yapmak ve kendi versiyonunuzu oluşturmak istiyorsanız, ayrıca bir de hazırladım. GitHub deposu.

Sonuçları Neo4j'de saklayacağımız için onu da indirip kurmanız gerekecek. Yukarıdaki örnekte, düğümlerin varlıkları ve ilişkilerin de ilişkileri temsil ettiği basit bir grafik şeması kullandım. Şimdi grafik şemamızı biraz yeniden düzenleyeceğiz. Varlıkları ve ilişkileri grafikte saklamak, aynı zamanda orijinal metni de kaydetmek istiyoruz. IE kanalının mükemmel olmadığını zaten bildiğimizden, bir denetim takibine sahip olmak gerçek dünya senaryolarında çok faydalıdır.

Yazara göre resim

Bir ilişkiyi bir ara düğüme yeniden düzenlemek biraz mantığa aykırı olabilir. Karşılaştığımız sorun başka bir ilişkiye işaret eden bir ilişkiye sahip olamamamızdır. Bu sorun göz önüne alındığında, bir ilişkiyi ara düğümde yeniden düzenlemeye karar verdim. Daha iyi ilişki türleri ve düğüm etiketleri üretmek için hayal gücümü kullanabilirdim ama olan bu. Sadece ilişki yönünün işlevini sürdürmesini istedim.

BBC haber veri setindeki 500 makaleyi Neo4j'ye aktarma kodu aşağıdaki gibidir. IE boru hattının çalışması için trinityIE liman işçisinin çalışıyor olması gerekir.

import json
import urllib
import pandas as pd
from neo4j import GraphDatabase driver = GraphDatabase.driver('bolt://localhost:7687', auth=('neo4j', 'letmein')) def ie_pipeline(text, relation_threshold=0.9, entities_threshold=0.8): # Prepare the URL. data = urllib.parse.urlencode([ ("text", text), ("relation_threshold", relation_threshold), ("entities_threshold", entities_threshold)]) url = "http://localhost:5000?" + data req = urllib.request.Request(url, data=data.encode("utf8"), method="GET") with urllib.request.urlopen(req, timeout=150) as f: response = f.read() response = json.loads(response.decode("utf8")) # Output the annotations. return response import_refactored_query = """
UNWIND $params as value
CREATE (a:Article{content:value.content})
FOREACH (rel in value.ie.relations | MERGE (s:Entity{name:rel.source}) MERGE (t:Entity{name:rel.target}) MERGE (s)-[:RELATION]->(r:Relation{type:rel.type})-[:RELATION]->(t) MERGE (a)-[:MENTIONS_REL]->(r))
WITH value, a
UNWIND value.ie.entities as entity
MERGE (e:Entity{name:entity.title})
SET e.wikiId = entity.wikiId
MERGE (a)-[:MENTIONS_ENT]->(e)
WITH entity, e
CALL apoc.create.addLabels(e,[entity.label]) YIELD node
RETURN distinct 'done' """ with driver.session() as session: params = [] for i,article in list(data.iterrows())[:500]: content = article['content'] ie_data = ie_pipeline(content) params.append({'content':content, 'ie':ie_data}) if (len(params) % 100 == 0): session.run(import_refactored_query, {'params':params}) params = [] session.run(update_query, {'params':params})

Kod ayrıca şu şekilde de mevcuttur: GitHub'da Jüpyter Not Defteri. GPU yeteneklerinize bağlı olarak IE işlem hattı biraz zaman alabilir. Şimdi çıktıyı inceleyelim. Açıkçası mantıklı sonuçları seçtim. Aşağıdaki sorguyu çalıştırın:

KAÇINCI p=(e:Entity{name:'Enrico Bondi'})-[:RELATION]->(r)-[:RELATION]->(), 
(r)<-[:MENTIONS_REL]-(s)
GERİ DÖNMEK *

Sonuçlar

BBC haber veri kümesindeki IE çıkarımının sonuçları. Yazara göre resim

Enrico Bondi'nin İtalyan vatandaşı olduğunu görebiliyoruz. İtalya Temsilciler Meclisi'nde görev yaptı. Başka bir ilişkiden Parmalat'ın da sahibi olduğu anlaşıldı. Kısa bir Google aramasından sonra, bu verilerin aşağı yukarı mümkün olduğu görülüyor.

Açıklanabilir yapay zekaya giden yol

Bunun açıklanabilir yapay zekayla ne ilgisi olduğunu merak edebilirsiniz. Size gerçek dünyadan bir örnek vereceğim. Bu araştırma makalesinin başlığı Bilgi Grafiği Tamamlama Aracılığıyla COVID-19 için İlaçların Yeniden Kullanılması. Ben doktor değilim, bu yüzden ayrıntılı bir sunum beklemeyin, ancak üst düzey bir genel bakış sunabilirim. İnternette çok sayıda tıbbi araştırma makalesi bulunmaktadır. Ayrıca çevrimiçi tıbbi kuruluş veritabanları da vardır:  or Ensemble'da. Biyomedikal araştırma makalelerinde bir Adlandırılmış Varlık Bağlantısı modeli çalıştırdığınızı ve çevrimiçi tıbbi veritabanlarından birini hedef bilgi tabanı olarak kullandığınızı varsayalım. Bu durumda, söz konusu varlıkları makalelerden çıkarabilirsiniz. Daha zorlu kısım ise ilişkinin çıkarılmasıdır. Bu çok önemli bir alan olduğu için büyük beyinler bir araya gelerek bu ilişkileri ortaya çıkardılar.

Muhtemelen daha fazla proje var, ancak bunların farkındayım. SemMedDB bahsedilen makalede de kullanılan proje. Artık bilgi grafiğiniz olduğuna göre mevcut ilaçların yeni amaçlarını tahmin etmeye çalışabilirsiniz. Ağ biliminde buna bağlantı tahmini denir. Bağlantıları ve bunların ilişki türlerini tahmin etmeye çalıştığınızda bilim camiası buna bilgi grafiği tamamlama adını verir. Mevcut ilaçlar için bazı yeni kullanım durumları öngördüğümüzü ve sonuçlarımızı bir doktora veya farmakoloğa gösterdiğimizi hayal edin. Cevabı muhtemelen şu olurdu: Bu hoş, ama bu yeni kullanım senaryosunun işe yarayacağını size düşündüren nedir? Makine öğrenimi modelleri bir kara kutudur, dolayısıyla bu pek yararlı değildir. Ancak doktora verebileceğiniz şey, mevcut ilaç ile tedavi edebileceği yeni hastalık arasındaki tüm bağlantılardır. Ve sadece doğrudan ilişkiler değil, aynı zamanda iki veya üç adım uzaklıktaki ilişkiler de. Bir biyomedikal araştırmacıya anlamlı gelmeyebileceği için bir örnek vereceğim. Mevcut ilacın hastalıkla ilişkili bir geni inhibe ettiğini varsayalım. İlaç ile hastalık arasında anlamlı olabilecek birçok doğrudan veya dolaylı bağlantı olabilir. Dolayısıyla açıklanabilir bir yapay zekaya doğru bir adım attık.

Sonuç

Bu projenin ortaya çıkışından gerçekten çok memnunum. Yaklaşık bir yıldır NLP ve Bilgi grafiklerini birleştirmeyle uğraşıyordum ve şimdi tüm bilgimi tek bir gönderiye döktüm. Umarım keyif almışsınızdır!

Not: IE boru hattında bazı değişiklikler yapmak istiyorsanız, kod şu şekilde mevcuttur: Github havuzu. Bu blog gönderisinin çoğaltılmasına yönelik kod ayrıca şu şekilde de mevcuttur: Jupyter Not Defteri.

Bu yazı orijinalinde Veri Bilimine Doğru ve yazarın izniyle TOPBOTS'a yeniden yayınlandı.

Bu makaleyi beğendiniz mi? Daha fazla AI araştırma güncellemesi için kaydolun.

Daha fazla teknik eğitim verdiğimizde size haber vereceğiz.

Kaynak: https://www.topbots.com/information-extraction-pipeline/

spot_img

En Son İstihbarat

spot_img