知識圖譜——用Python代碼從文本中挖掘信息的強大數據科學技術

2021-01-11 讀芯術

全文共6382字,預計學習時長20分鐘

圖源:Unsplash攝影:Clem Onojeghuo

概覽

知識圖譜是數據科學中最吸引人的概念之一學習如何使用Wikipedia頁面中的文本構建知識圖譜在Python中使用流行的spaCy庫在Python中構建知識圖譜

引言

不用過多介紹,大家都知道梅西。即使是那些不關注足球的人,也聽說過這位最偉大球員在輝煌。下面是他的維基百科頁面:

這個頁面包含了很多信息!裡面不僅有文本、大量的超連結,甚至還有音頻片段。整個網頁上有很多相關的和可能會有用的信息,將它們應用到實際生活中可能性是無窮的。

然而,還有一個小問題。這不是給機器提供數據的理想來源,至少不是以現在的這種形式。

是否能找到一種方法,使這些文本數據變為機器可讀?能否將這些文本數據轉錄成既讓機器可以使用,也能讓我們可以輕鬆解釋的東西?

答案是肯定的。我們可以藉助知識圖譜(KG),這是數據科學最吸引人的概念之一。我已經被知識圖譜的巨大潛力和實際應用震驚了,我相信你也會和我一樣。

在本文中,你將了解什麼是知識圖譜,以及它們的作用,然後我們將基於從維基百科中提取的數據,來構建知識圖譜以用於深入研究代碼。

目錄

1. 什麼是知識圖譜?

2. 如何在圖譜中表示知識?

○ 句子分割

○ 實體抽取

○ 關係抽取

3. 依靠文本數據構建知識圖譜

什麼是知識圖譜?

先明確一個概念:在本文中經常出現的術語「圖譜」,並不是指柱狀圖、餅狀圖或線狀圖,而是相互關聯的實體,它們可以是人、地點、組織,甚至是一個事件。

不妨說,圖譜是節點和邊*的組合。

看看下面的數據:

*邊(Edge)是節點間的連線,用於表示節點間關係。

這裡的節點a和節點b是兩個不同的實體,節點通過邊連接。如圖是我們可以構建的最小的知識圖譜——它也被稱為三元組(實體-關係-實體)。

知識圖譜有多種形狀和大小。例如,截至2019年10月,維基數據(Wikidata)的知識圖譜有59,910,568個節點。

如何在圖譜中表示知識?

在開始構建知識圖譜前,我們需要了解信息或知識是如何嵌入到這些圖譜中的。

舉例來解釋:如果節點a=普京,節點b=俄羅斯,那麼邊很可能是「俄羅斯總統」:

一個節點或實體也可以有不止一個關係。普京不僅是俄羅斯總統,他還曾為蘇聯安全機構克格勃工作。但是如何把這些關於普京的新信息,整合到上面的知識圖譜中呢?

其實很簡單。只需為新實體「克格勃」再添加一個節點:

新的關係不僅可以添加在第一個節點,而且可以出現在知識圖譜中的任何節點,如下所示:

俄羅斯是亞太經濟合作組織(APEC)的成員國

識別實體和他們的相互關係並不是一項困難的任務。但是,手動構建知識圖譜是難以處理大量信息的。沒有人會瀏覽成千上萬的文檔,然後提取出所有的實體和它們之間的關係。

因此,機器無疑是更好的選擇,瀏覽成百上千的文件對它們來說簡直小菜一碟。但是還有另外一個挑戰——機器不懂自然語言。這就輪到自然語言處理 (Natural Language Processing,簡稱NLP) 技術出場了。

想要從文本中構建知識圖譜,讓機器能理解自然語言就至關重要。這可以通過使用自然語言處理(NLP)技術來實現,如句子分割、依存句法分析、詞性標註和實體識別。下文將更詳細地對它們進行探討。

句子分割

構建知識圖譜的第一步是將文本或文章分割成句子。然後,列出那些只有一個主語和賓語的句子。下面是示例文本:

「在最新的男子單打排名中,印度網球選手蘇米特納加爾(Sumit Nagal)從135名上升了6個名次,達到職業生涯中的最好成績129名。這位22歲的選手最近贏得了ATP挑戰錦標賽。2019年美國網球公開賽中他首次亮相時,就在對陣費德勒的比賽中贏得了大滿貫。納加爾贏得了第一組比賽。(Indian tennis player Sumit Nagal moved up six places from 135to a career-best 129 in the latest men’s singles ranking. The 22-year-oldrecently won the ATP Challenger tournament. He madehis Grand Slam debut against Federer in the 2019 US Open. Nagal won the firstset.)」

我們把上面的段落分成幾個句子:

1. 在最新的男子單打排名中,印度網球選手蘇米特納加爾(SumitNagal)從135名上升了6個名次,達到職業生涯中的最好成績129名。(Indian tennis player Sumit Nagal moved up six places from135 to a career-best 129 in the latest men’s singles ranking.)

2. 這位22歲的選手最近贏得了ATP挑戰錦標賽。(The 22-year-old recently won the ATP Challengertournament))

3. 2019年美國網球公開賽中他首次亮相時,就在對陣費德勒比賽中贏得了大滿貫。(Hemade his Grand Slam debut against Federer in the 2019 US Open.)

4. 納加爾贏得了第一組比賽。(Nagalwon the first set.)

在這四個句子中,我們將選出第二個和第四個句子,因為每個句子都包含一個主語和一個賓語。第二句中,「22歲的選手(22-year-old)」是主語,賓語是「ATP挑戰賽(ATP Challenger tournament)」。第四句中,主語是「納加爾(Nagal)」,「第一組比賽(first set)」是賓語:

讓機器理解文本是最大的挑戰,特別是在主語和賓語不止一個的情況下。以上面兩個句子為例,提取句子中的賓語有點棘手。你能想到解決這個問題的方法嗎?

實體抽取

從句子中提取一個詞實體並不是艱巨的任務。我們可以藉助詞性(POS)標籤輕鬆做到這一點。名詞和專有名詞可以是我們的實體。

然而,當一個實體包括多個單詞時,僅僅藉助詞性標記是不夠的。我們需要解析句子間的複雜關係。先來獲取其中一個句子的依存標記。使用流行的spaCy庫來完成這個任務:

import spacy

nlp = spacy.load('en_core_web_sm')

doc = nlp("The 22-year-old recently won ATP Challenger tournament.")

for tok in doc:

print(tok.text, "...", tok.dep_)

輸出:

The… det

22-year … amod

– … punct

old … nsubj

recently … advmod

won … ROOT

ATP … compound

Challenger … compound

tournament … dobj

. … punct

根據依存關係解析器,這個句子中的主語(nsubj)是「old」。這不是我們想要的實體。我們想要的是「22歲的選手(22-year-old)」。

「22歲的(22-year)」的依存關係標籤是amod,這意味著它是(old)」的修飾語。因此,應該定義一個規則來提取這樣的實體。

可以是這樣的規則:提取主語/賓語及其修飾語,並提取它們之間的標點。

但是再看看句子中的賓語(dobj)。它只是「錦標賽(tournament)」而不是「ATP挑戰錦標賽(ATPChallenger tournament)」。在這句裡,沒有修飾詞,只有複合詞。

複合詞是指不同詞組合起來所形成的新術語,它們有著和源詞不同的意思。因此,我們可以更新上面的規則----提取主語/賓語及其修飾語、複合詞,並提取它們之間的標點。

簡而言之,我們使用依存句法分析來提取實體。

提取關係

實體提取僅僅是一半的工作。想要建立知識圖譜,需要邊來連接各個節點(實體)。這些邊表示節點之間的關係。

回到上一節中的例子,選出幾句話來構建一個知識圖譜:

你能猜出這兩個句子中主語和賓語的關係嗎?

兩個句子有相同的關係——「贏得(won)」。看看該如何提取這些關係。這裡將再次使用依存項解析:

doc = nlp("Nagal won the first set.")

for tok in doc:

print(tok.text, "...", tok.dep_)

輸出:

Nagal… nsubj

won … ROOT

the … det

first … amod

set … dobj

. … punct

為了提取關係,必須找到句子的根(root),它也是句子裡的動詞。因此,在這個句子裡找到的關係就是「贏得(won)」。

最後,這兩個句子的知識圖譜是這樣的:

從文本數據構建知識圖譜

是時候進行代碼操作了!打開Jupyter Notebooks(或者任何你喜歡的集成開發環境-IDE)。

使用一組從維基百科中找到的電影中的文本,從頭開始構建一個知識圖譜。我已經從500多篇維基百科文章中摘錄了大約4300句話。每個句子都包含兩個實體——一個主語和一個賓語。你可以點擊這裡下載這些句子。

推薦使用Google Colab,能加快計算的運行速度。

導入庫

import re

import pandas as pd

import bs4

import requests

import spacy

from spacy import displacy

nlp = spacy.load('en_core_web_sm')

from spacy.matcher import Matcher

from spacy.tokens import Span

import networkx as nx

import matplotlib.pyplot as plt

from tqdm import tqdm

pd.set_option('display.max_colwidth', 200)

%matplotlib inline

讀取數據

閱讀包含維基百科句子的CSV文件:

# import wikipedia sentences

candidate_sentences = pd.read_csv("wiki_sentences_v2.csv")

candidate_sentences.shape

輸出:(4318, 1)

來看幾個例句:

candidate_sentences['sentence'].sample(5)

輸出:

檢查其中一個句子的主語和賓語。理想情況下,句子中應該有一個主語和一個賓語:

doc = nlp("the drawdown process is governed by astm standard d823")

for tok in doc:

print(tok.text, "...", tok.dep_)

輸出:

很好!只有一個主語「過程」(process)和一個賓語「標準」(standard)。你可以用類似的方式檢查其他句子。

實體對抽取

想要構架出一個知識圖譜,最重要的是節點和它們之間的邊。

這些節點是出現在維基百科語句中的實體。邊是連接各個實體之間的關係。我們將以無監督的方式提取這些要素,也就是說,我們將依靠句子的語法。

其主要思想就是在瀏覽一個句子時,把遇到的主語和賓語提取出來。然而,還有其他挑戰存在——實體可能不止一個單詞,如「紅酒(red wine)」,依存關係解析器只會將單個單詞標記為主語或賓語。

因此,下面創建了一個函數來從一個句子中提取主語和賓語(也就是實體),同時解決了上面提到的挑戰。方便起見,將代碼分成了多個板塊:

defget_entities(sent):

## chunk 1

ent1 =""

ent2 =""

prv_tok_dep ="" # dependency tag of previous token in the sentence

prv_tok_text ="" # previous token in the sentence

prefix =""

modifier =""

#############################################################

for tok in nlp(sent):

## chunk 2

# if token is a punctuation mark then move on to the next token

if tok.dep_ !="punct":

# check: token is a compound word or not

if tok.dep_ =="compound":

prefix = tok.text

# if the previous word was also a 'compound' then add the current word to it

if prv_tok_dep =="compound":

prefix = prv_tok_text +""+ tok.text

# check: token is a modifier or not

if tok.dep_.endswith("mod") ==True:

modifier = tok.text

# if the previous word was also a 'compound' then add the current word to it

if prv_tok_dep =="compound":

modifier = prv_tok_text +""+ tok.text

## chunk 3

if tok.dep_.find("subj") ==True:

ent1 = modifier +""+ prefix +""+ tok.text

prefix =""

modifier =""

prv_tok_dep =""

prv_tok_text =""

## chunk 4

if tok.dep_.find("obj") ==True:

ent2 = modifier +""+ prefix +""+ tok.text

## chunk 5

# update variables

prv_tok_dep = tok.dep_

prv_tok_text = tok.text

#############################################################

return [ent1.strip(), ent2.strip()]

我來解釋一下上面函數中的代碼板塊:

板塊1

我已經在這個板塊中定義了一些空變量。prv_tok_dep 和 prv_tok_text將分別保存句子中前一個單詞和它本身的依存標記。prefix和modifier將保存與主語或賓語有關聯的文本。

板塊2

接下來,循環瀏覽句子中的所有標記。首先要檢查標記是不是標點符號。如果是,那麼我們將忽略它看下一標記(token)。如果標記是複合詞(依存標記=「compound」)中的一部分,將把它保存在「前綴」變量中。一個複合詞是多個詞的組合,它們聯繫在一起形成一個有新意義的詞,例如「足球場」(「FootballStadium」),「動物愛人」(「animallover」)。

當我們在句子中遇到主語或賓語時,會給它加上這個前綴。修飾語同樣,比如「漂亮的襯衫」、「大房子」等等。

板塊3

在這裡,如果標記是主語的話,它將被捕獲為ent1變量中的第一個實體。諸如prefix, modifier, prv_tok_dep,和 prv_tok_text 這些變量將被重置。

板塊4

在這裡,如果標記是賓語,那麼它將被捕獲為ent2變量中的第二個實體。諸如prefix, modifier, prv_tok_dep,和 prv_tok_text 這些變量將再次被重置。

板塊5

一旦在句子中捕獲了主語和賓語,我們將更新前面的標記及其依存標記。

在一個句子上測試一下這個函數:

get_entities("the film had 200 patents")

輸出: [『film』,『200 patents』]

很好,看起來一切都和預想的一樣。在上面的句子中,「電影(film)」是主語,「200項專利(200 patents)」是賓語。

現在可以使用這個函數,提取數據中所有句子的實體對:

entity_pairs = []

for i in tqdm(candidate_sentences["sentence"]):

entity_pairs.append(get_entities(i))

這個實體對名單包含維基百科句子中的所有主語-賓語對。來看看其中的幾個:

entity_pairs[10:20]

輸出:

在這些實體對中有一些代詞,如「我們(we)」、「它(it)」、「她(she)」等等。我們希望用專有名詞或名詞來代替它們。也許可以進一步改進get_entities()函數來過濾代詞。現在,讓我們暫時保持現狀,進入關係抽取部分。

關係/謂語提取

這將是本文非常有趣的一部分。假設是——謂語實際上是句子中的主要動詞。

例如,在「1929年共有六十部好萊塢音樂劇被發行」這個句子中,動詞是「被發行(released in)」,它也是本句得到的三重結構的謂語。

下面的函數能夠從句子中捕獲到這樣的謂語。這裡使用了spaCy庫基於規則的匹配功能:

defget_relation(sent):

doc = nlp(sent)

# Matcher class object

matcher = Matcher(nlp.vocab)

#define the pattern

pattern = [{'DEP':'ROOT'},

{'DEP':'prep','OP':"?"},

{'DEP':'agent','OP':"?"},

{'POS':'ADJ','OP':"?"}]

matcher.add("matching_1", None, pattern)

matches = matcher(doc)

k =len(matches) -1

span = doc[matches[k][1]:matches[k][2]]

return(span.text)

函數中定義的模式試圖找到句子中的根(root)詞或主要動詞。一旦確定了根,模式就會檢查它後面是不是介詞(「prep」)或功能詞。如果是的話,就將它添加到根詞。

這個函數是這樣的:

get_entities("John completed the task")

輸出: 「completed

用同樣的方法找出所有維基百科句子中的關係:

relations = [get_relation(i) for i in tqdm(candidate_sentences['sentence'])]

來看一看剛剛提取的最常見的關係或謂詞:

pd.Series(relations).value_counts()[:50]

輸出:

結果表明,「A現在是(is)B」和「A曾是(was)B」是最常見的關係。然而,有很多的關係與整個主題,即「圍繞電影的生態系統」聯繫更緊密。其中一些例子是「由」、「發布」、「製作」、「編寫」等等。

構建知識圖譜

最後,從提取的實體(主語-賓語對)和謂語(實體之間的關係)構建知識圖。

創建一個實體和謂語的數據框架:

# extract subject

source = [i[0] for i in entity_pairs]

# extract object

target = [i[1] for i in entity_pairs]

kg_df = pd.DataFrame({'source':source, 'target':target, 'edge':relations})

接下來,使用networkx庫從這個數據框架創建一張網。節點表示實體,節點之間的邊或連接表示節點之間的關係。

它將是一個有向圖譜。換句話說,任何連接的節點對之間的關係都不是雙向的,它只是從一個節點到另一個節點。例如,「約翰吃義大利麵」:

# create a directed-graph from a dataframe

G=nx.from_pandas_edgelist(kg_df, "source", "target",

edge_attr=True, create_using=nx.MultiDiGraph())

描繪一下這個網:

plt.figure(figsize=(12,12))

pos = nx.spring_layout(G)

nx.draw(G, with_labels=True, node_color='skyblue', edge_cmap=plt.cm.Blues, pos= pos)

plt.show()

輸出:

好吧,這並不是我們期待的結果,但看起來還是相當壯觀的!

但已經構建了一個圖譜,顯示了所有的關係。很難想像將這麼多關係或謂語可視化成一個圖譜。

因此,建議只把一些重要的關係做成可視化圖譜,我一次處理一個關係。從「由」組成的關係開始:

G=nx.from_pandas_edgelist(kg_df[kg_df['edge']=="composed by"], "source", "target",

edge_attr=True, create_using=nx.MultiDiGraph())

plt.figure(figsize=(12,12))

pos = nx.spring_layout(G, k=0.5) # k regulates the distance between nodes

nx.draw(G, with_labels=True, node_color='skyblue', node_size=1500, edge_cmap=plt.cm.Blues, pos= pos)

plt.show()

輸出:

這是一個更清晰的圖譜。這裡箭頭指向作曲家。例如,A.R.拉赫曼是一位著名的音樂作曲家,在上面的圖譜中,他有諸如「電影原聲帶」、「電影配樂」和「音樂」這樣的實體。

再看更多的關係。

因為編寫在任何一部電影中都佔重要角色,所以我想把「編寫」關係的圖譜可視化:

G=nx.from_pandas_edgelist(kg_df[kg_df['edge']=="written by"], "source", "target",

edge_attr=True, create_using=nx.MultiDiGraph())

plt.figure(figsize=(12,12))

pos = nx.spring_layout(G, k=0.5)

nx.draw(G, with_labels=True, node_color='skyblue', node_size=1500, edge_cmap=plt.cm.Blues, pos= pos)

plt.show()

輸出:

太棒了!這張知識圖譜給了我們一些非同尋常的信息。像Javed Akhtar、Krishna Chaitanya和Jaideep Sahni都是著名的作詞家,這張圖譜很好地捕捉到了這種關係。

看看另一個重要謂語的知識圖譜,即「釋放(發布於)」:

G=nx.from_pandas_edgelist(kg_df[kg_df['edge']=="released in"], "source", "target",

edge_attr=True, create_using=nx.MultiDiGraph())

plt.figure(figsize=(12,12))

pos = nx.spring_layout(G, k=0.5)

nx.draw(G, with_labels=True, node_color='skyblue', node_size=1500, edge_cmap=plt.cm.Blues, pos= pos)

plt.show()

輸出:

我們可以在這個圖譜中看到不少有趣的信息。例如這種關係:「20世紀80年代上映的幾部動作恐怖電影」和「4844塊屏幕上放映的格鬥電影」。這些都是事實,這張圖譜告訴我們,確實可以從文本中挖掘出這些事實。真是太神奇了!

結語

在本文中,我們學習了如何以三元組的形式,從給定文本中提取信息,並藉此構建知識圖譜。

然而,我們只使用恰好有兩個實體的句子。即使這樣,也能夠建立信息量很大的知識圖譜,所以想像一下它的潛力!

我鼓勵大家探索這個領域的信息抽取,學習更複雜關係的提取。如果你有任何疑問或想要分享你的想法,請隨時留言。

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 領域大數據知識圖譜專題 《中國科學:信息科學》
    【點擊論文題目可閱讀全文】 「基於知識圖譜的推薦系統研究綜述」針對基於知識圖譜的推薦系統這一領域進行了全面的綜述。介紹了推薦系統與知識圖譜中的一些基本概念,以及現有方法如何挖掘知識圖譜不同種類的信息並應用於推薦系統。總結了相關的一系列推薦應用場景, 提出了對基於知識圖譜的推薦系統前景的看法, 展望了該領域未來的研究方向。
  • 數據挖掘領頭人韓家煒教授:如何從無結構文本到有用的知識?
    兩個會議同為CCF B類,其區別在於前者是ACM舉辦,而後者是IEEE舉辦;此外CIKM覆蓋範圍更廣,包括了資料庫、信息檢索和數據挖掘三個領域,而ICDM則更為專注數據挖掘。現實世界中的大數據在很大程度上是非結構化的、互聯的和動態的,且以自然語言文本的形式出現,將此類龐大的非結構化數據轉換為有用的知識是一條必由之路。目前大家普遍採用勞動密集型的方法對數據進行打標籤從而提取知識,這種方法短時來看可取,但卻無法進行擴展,特別是許多企業的文本數據是高度動態且領域相關。
  • 文本挖掘從小白到精通(二):料庫和詞向量空間
    寫筆者最近在梳理自己的文本挖掘知識結構,藉助gensim、sklearn、keras等庫的文檔做了些擴充,會陸陸續續介紹文本向量化、tfidf、主題模型、word2vec,既會涉及理論,也會有詳細的代碼和案例進行講解,希望在梳理自身知識體系的同時也能對想學習文本挖掘的朋友有一點幫助,這是筆者寫該系列的初衷
  • 實戰課堂丨大數據關係信息挖掘:知識圖譜應用案例分享
    負責聯想創投大數據機器智能產品和行業應用模型開發。擁有多年高性能計算、大數據、人工智慧行業經驗 。畢業於美國紐約州立大學,曾在IBM認知團隊任行業解決方案專家。榮之聯實戰課堂第4期的《解讀大數據分析:新技術,新實踐》主題沙龍上,聯想創投(香港)機器智能實驗室高級產品經理錢廣銳跟大家分享了《大數據關係信息挖掘:知識圖譜應用案例分享》。
  • 百分點認知智能實驗室:信息抽取在知識圖譜構建中的實踐與應用
    如何從海量的文本或網頁的原始數據中提取有價值的信息是行業知識圖譜構建的關鍵因素,信息抽取(Information Extraction,IE)作為自然語言處理技術的任務,該任務的重點在於從機器可讀取的非結構化或半結構化的文本中抽取信息,最終以結構化的形式進行描述,使信息可以存入資料庫以供進一步處理。
  • 如何構建知識圖譜?
    結構數據一般就是公司的業務數據。這些數據都存儲到資料庫裡,從庫裡面抽取出來做一些簡單的預處理就可以拿來使用。半結構化數據和非結構化數據,比如對商品的描述,或是標題,可能是一段文本或是一張圖片,這就是一些非結構化數據了。但它裡面是存儲了一些信息的,反映到的是知識圖譜裡的一些屬性。所以需要對它裡面進行一個抽取,這是構建知識圖譜中比較費時費力的一個工作。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    在當今社會,網際網路上充斥著許多有用的數據。我們只需要耐心觀察並添加一些技術手段即可獲得大量有價值的數據。而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?
  • 微信、微博數據這麼多,如何從中挖掘潛在信息? | CCF-ADL 87期
    近年來,以微博、微信等為代表的在線社會媒體逐漸成為人們發布、傳播和獲取信息的主要媒介。在社交網絡中匯聚了大量的用戶關係數據和信息傳播數據,對社交網絡數據的研究和挖掘將為我們了解和研究人類社會、經濟、商業等的潛在規律提供極大的幫助。那麼在海量的社交網絡數據下面存在著什麼樣的特點和規律呢?在線社交網絡的信息傳播與物理社交網絡的信息傳播有什麼樣異同呢?
  • 「Python爬蟲與文本實例技術與應用」培訓班通知
    通過爬蟲獲取的海量信息,我們可以對其進行進一步的分析:市場預測、文本分析、機器學習方法等。     Python作為一門腳本語言,它靈活、易用、易學、適用場景多,實現程序快捷便利,早已經成為程式設計師們的一門編程利器。Python這門程式語言包羅萬象,可以說掌握了python,除了一些特殊環境和高度的性能要求,你可以用它做任何事。
  • 試驗知識圖譜分析
    【試驗工程師·公益學習營】第九期第2講【試驗工程師·公益學習營】總第42講,於2020年10月30日如期舉行,本期講師是瑞風協同技術總監,他具有20餘年軟體開發和架構設計經驗,參與多個領域的設計仿真平臺、材料庫、知識庫系統建設,重點研究方向為大數據技術和人工智慧技術,專注於文本挖掘技術、自然語言處理技術在知識庫自動構建、知識自動分類、知識智能推送、知識關聯挖掘
  • 實用Python文本預處理代碼
    本文將討論文本預處理的基本步驟,旨在將文本信息從人類語言轉換為機器可讀格式以便用於後續處理。此外,本文還將進一步討論文本預處理過程所需要的工具。  當拿到一個文本後,首先從文本正則化 (text normalization) 處理開始。
  • 使用一行Python代碼從圖像讀取文本
    但在這裡,情況正好相反——對你來說很瑣碎的任務,比如識別圖像中的貓或狗,對電腦來說真的很難。在某種程度上,我們是天造地設的一對。至少現在是這樣。雖然圖像分類和涉及到一定程度計算機視覺的任務可能需要大量的代碼和紮實的理解,但是從格式良好的圖像中讀取文本在Python中卻是簡單的,並且可以應用於許多現實生活中的問題。
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    共4天8節,講解機器學習和深度學習的模型理論和代碼實踐,梳理機器學習、深度學習、計算機視覺的技術框架,從根本上解決如何使用模型、優化模型的問題;每次課中,首先闡述算法理論和少量公式推導,然後使用真實數據做數據挖掘、機器學習、深度學習的數據分析、特徵選擇、調參和結果比較。
  • 明略科技榮獲第十屆吳文俊人工智慧科學技術發明一等獎
    近日,2020年度第十屆吳文俊人工智慧科學技術獎獲獎名單公示,明略科技憑藉知識圖譜自動構建及行業應用的成果獲人工智慧技術發明一等獎。企業在數位化和智能化轉型過程中,依舊面臨數據難挖掘、圖譜難管理、知識難共享的困境。企業內外部數據源龐雜,即便掌握了數據也難以有效利用和挖掘,同時很難把知識作為資源進行管理,仍在管文檔、管數據。此外,老員工的經驗無法沉澱,新人培養周期長,核心成員離職會造成企業競爭力下降。如何從感知智能邁向認知智能,真正從數據中挖掘、管理和運營知識,提升企業生產效能?知識圖譜自動化構建是重要一環。
  • 小白學數據小抄放送 Python,R,大數據,機器學習
    它提供了Python學習的必備包和一些有用的學習技巧等資源。 2. Python基礎小抄表 這張由Datacamp製作的小抄表覆蓋了所有Python數據科學需要的基礎知識。如果你剛開始用Python,可以留著這張做快速參考。背下這些小抄的代碼變量、數據類型函數、字符串操作、類型轉換、列表和常用操作。尤其是它列出了重要的Python包,給出了用於選擇並導入包的小抄代碼。
  • 實戰:利用知識圖譜分析企業信息資產威脅(要點+視頻)
    知識圖譜能夠把複雜的知識領域通過語義匹配,數據挖掘、信息處理、知識計量和圖形繪製顯示出來,揭示知識領域的動態發展規律,為研究和決策提供切實的、有價值的參考。因此,當知識圖譜應用於信息資產安全威脅的發現與分析時,能夠顯著提升發現資產安全威脅的效率和準確率,為企業安全人員的威脅分析提供決策依據。
  • 文本挖掘從小白到精通(一):語料、向量空間和模型的概念
    本文給大家介紹幾個在使用gensim進行文本挖掘所需了解的基本概念和術語,並提供一些簡單的用法示例。enjoy~筆者最近在梳理自己的文本挖掘知識結構,藉助gensim、sklearn、keras等庫的文檔做了些擴充,希望在梳理自身知識體系的同時也能對想學習文本挖掘的朋友有一點幫助,這是筆者寫該系列的初衷。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    python教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • 需要知識的後深度學習時代,如何高效自動構建知識圖譜?
    該技術常見於智慧型手機或音箱載體上的智能對話機器人,如 Siri、小愛同學、天貓精靈,以及weiruan的小冰、小娜等,這些智能問答 agent 的背後都有相關企業各自積累的知識圖譜作為問答系統的支撐。 智能推薦:基於知識圖譜的推薦能更好將用戶與被推薦項目之間的各種相互聯繫考慮進來,可以增強數據的語義信息、挖掘隱藏的關聯信息,進一步提高推薦的準確度。
  • 同盾科技成功入選《2020愛分析·知識圖譜廠商全景報告》
    愛分析在其報告中指出,在數位化轉型的過程中,企業面臨快速增長的數據壓力,如何從海量數據中挖掘有價值的信息成為企業當前亟需解決的關鍵問題。知識圖譜提供了一種從海量非結構化數據中抽取結構化知識,並利用圖分析進行關聯關係挖掘的重要技術手段。