偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

利用 Python 探究 Google 的自然語言 API

開發(fā) 后端
本文介紹了 Google 的自然語言 API,并探究了常見的自然語言處理(NLP)任務(wù),以及如何使用它們來為網(wǎng)站內(nèi)容創(chuàng)建提供信息。

[[389802]]

Google API 可以凸顯出有關(guān) Google 如何對網(wǎng)站進行分類的線索,以及如何調(diào)整內(nèi)容以改進搜索結(jié)果的方法。

作為一名技術(shù)性的搜索引擎優(yōu)化人員,我一直在尋找以新穎的方式使用數(shù)據(jù)的方法,以更好地了解 Google 如何對網(wǎng)站進行排名。我最近研究了 Google 的 自然語言 API 能否更好地揭示 Google 是如何分類網(wǎng)站內(nèi)容的。

盡管有 開源 NLP 工具,但我想探索谷歌的工具,前提是它可能在其他產(chǎn)品中使用同樣的技術(shù),比如搜索。本文介紹了 Google 的自然語言 API,并探究了常見的自然語言處理(NLP)任務(wù),以及如何使用它們來為網(wǎng)站內(nèi)容創(chuàng)建提供信息。

了解數(shù)據(jù)類型

首先,了解 Google 自然語言 API 返回的數(shù)據(jù)類型非常重要。

實體

實體Entities是可以與物理世界中的某些事物聯(lián)系在一起的文本短語。命名實體識別Named Entity Recognition(NER)是 NLP 的難點,因為工具通常需要查看關(guān)鍵字的完整上下文才能理解其用法。例如,同形異義字homographs拼寫相同,但是具有多種含義。句子中的 “lead” 是指一種金屬:“鉛”(名詞),使某人移動:“牽領(lǐng)”(動詞),還可能是劇本中的主要角色(也是名詞)?Google 有 12 種不同類型的實體,還有第 13 個名為 “UNKNOWN”(未知)的統(tǒng)稱類別。一些實體與維基百科的文章相關(guān),這表明 知識圖譜 對數(shù)據(jù)的影響。每個實體都會返回一個顯著性分數(shù),即其與所提供文本的整體相關(guān)性。

 

實體

情感

情感Sentiment,即對某事的看法或態(tài)度,是在文件和句子層面以及文件中發(fā)現(xiàn)的單個實體上進行衡量。情感的得分score范圍從 -1.0(消極)到 1.0(積極)。幅度magnitude代表情感的非歸一化non-normalized強度;它的范圍是 0.0 到無窮大。

 

情感

語法

語法Syntax解析包含了大多數(shù)在較好的庫中常見的 NLP 活動,例如 詞形演變lemmatization詞性標記part-of-speech tagging 和 依賴樹解析dependency-tree parsing。NLP 主要處理幫助機器理解文本和關(guān)鍵字之間的關(guān)系。語法解析是大多數(shù)語言處理或理解任務(wù)的基礎(chǔ)部分。

 

語法

分類

分類Categories是將整個給定內(nèi)容分配給特定行業(yè)或主題類別,其置信度confidence得分從 0.0 到 1.0。這些分類似乎與其他 Google 工具使用的受眾群體和網(wǎng)站類別相同,如 AdWords。

 

分類

提取數(shù)據(jù)

現(xiàn)在,我將提取一些示例數(shù)據(jù)進行處理。我使用 Google 的 搜索控制臺 API 收集了一些搜索查詢及其相應(yīng)的網(wǎng)址。Google 搜索控制臺是一個報告人們使用 Google Search 查找網(wǎng)站頁面的術(shù)語的工具。這個 開源的 Jupyter 筆記本 可以讓你提取有關(guān)網(wǎng)站的類似數(shù)據(jù)。在此示例中,我在 2019 年 1 月 1 日至 6 月 1 日期間生成的一個網(wǎng)站(我沒有提及名字)上提取了 Google 搜索控制臺數(shù)據(jù),并將其限制為至少獲得一次點擊(而不只是曝光impressions)的查詢。

該數(shù)據(jù)集包含 2969 個頁面和在 Google Search 的結(jié)果中顯示了該網(wǎng)站網(wǎng)頁的 7144 條查詢的信息。下表顯示,絕大多數(shù)頁面獲得的點擊很少,因為該網(wǎng)站側(cè)重于所謂的長尾(越特殊通常就更長尾)而不是短尾(非?;\統(tǒng),搜索量更大)搜索查詢。

 

所有頁面的點擊次數(shù)柱狀圖

為了減少數(shù)據(jù)集的大小并僅獲得效果最好的頁面,我將數(shù)據(jù)集限制為在此期間至少獲得 20 次曝光的頁面。這是精煉數(shù)據(jù)集的按頁點擊的柱狀圖,其中包括 723 個頁面:

 

部分網(wǎng)頁的點擊次數(shù)柱狀圖

在 Python 中使用 Google 自然語言 API 庫

要測試 API,在 Python 中創(chuàng)建一個利用 google-cloud-language 庫的小腳本。以下代碼基于 Python 3.5+。

首先,激活一個新的虛擬環(huán)境并安裝庫。用環(huán)境的唯一名稱替換 <your-env> 。

  1. virtualenv <your-env>
  2. source <your-env>/bin/activate
  3. pip install --upgrade google-cloud-language
  4. pip install --upgrade requests

該腳本從 URL 提取 HTML,并將 HTML 提供給自然語言 API。返回一個包含 sentiment、 entities 和 categories 的字典,其中這些鍵的值都是列表。我使用 Jupyter 筆記本運行此代碼,因為使用同一內(nèi)核注釋和重試代碼更加容易。

  1. # Import needed libraries
  2. import requests
  3. import json
  4.  
  5. from google.cloud import language
  6. from google.oauth2 import service_account
  7. from google.cloud.language import enums
  8. from google.cloud.language import types
  9.  
  10. # Build language API client (requires service account key)
  11. client = language.LanguageServiceClient.from_service_account_json('services.json')
  12.  
  13. # Define functions
  14. def pull_googlenlp(client, url, invalid_types = ['OTHER'], **data):
  15. html = load_text_from_url(url, **data)
  16. if not html:
  17. return None
  18. document = types.Document(
  19. content=html,
  20. type=language.enums.Document.Type.HTML )
  21.  
  22. features = {'extract_syntax': True,
  23. 'extract_entities': True,
  24. 'extract_document_sentiment': True,
  25. 'extract_entity_sentiment': True,
  26. 'classify_text': False
  27. }
  28. response = client.annotate_text(document=document, features=features)
  29. sentiment = response.document_sentiment
  30. entities = response.entities
  31. response = client.classify_text(document)
  32. categories = response.categories
  33. def get_type(type):
  34. return client.enums.Entity.Type(entity.type).name
  35. result = {}
  36. result['sentiment'] = []
  37. result['entities'] = []
  38. result['categories'] = []
  39.  
  40. if sentiment:
  41. result['sentiment'] = [{ 'magnitude': sentiment.magnitude, 'score':sentiment.score }]
  42. for entity in entities:
  43. if get_type(entity.type) not in invalid_types:
  44. result['entities'].append({'name': entity.name, 'type': get_type(entity.type), 'salience': entity.salience, 'wikipedia_url': entity.metadata.get('wikipedia_url', '-') })
  45. for category in categories:
  46. result['categories'].append({'name':category.name, 'confidence': category.confidence})
  47. return result
  48.  
  49.  
  50. def load_text_from_url(url, **data):
  51.  
  52. timeout = data.get('timeout', 20)
  53. results = []
  54. try:
  55. print("Extracting text from: {}".format(url))
  56. response = requests.get(url, timeout=timeout)
  57.  
  58. text = response.text
  59. status = response.status_code
  60.  
  61. if status == 200 and len(text) > 0:
  62. return text
  63. return None
  64.  
  65. except Exception as e:
  66. print('Problem with url: {0}.'.format(url))
  67. return None

要訪問該 API,請按照 Google 的 快速入門說明 在 Google 云主控臺中創(chuàng)建一個項目,啟用該 API 并下載服務(wù)帳戶密鑰。之后,你應(yīng)該擁有一個類似于以下內(nèi)容的 JSON 文件:

 

services.json 文件

命名為 services.json,并上傳到項目文件夾。

然后,你可以通過運行以下程序來提取任何 URL(例如 Opensource.com)的 API 數(shù)據(jù):

  1. url = "https://opensource.com/article/19/6/how-ssh-running-container"
  2. pull_googlenlp(client,url)

如果設(shè)置正確,你將看到以下輸出:

 

拉取 API 數(shù)據(jù)的輸出

為了使入門更加容易,我創(chuàng)建了一個 Jupyter 筆記本,你可以下載并使用它來測試提取網(wǎng)頁的實體、類別和情感。我更喜歡使用 JupyterLab,它是 Jupyter 筆記本的擴展,其中包括文件查看器和其他增強的用戶體驗功能。如果你不熟悉這些工具,我認為利用 Anaconda 是開始使用 Python 和 Jupyter 的最簡單途徑。它使安裝和設(shè)置 Python 以及常用庫變得非常容易,尤其是在 Windows 上。

處理數(shù)據(jù)

使用這些函數(shù),可抓取給定頁面的 HTML 并將其傳遞給自然語言 API,我可以對 723 個 URL 進行一些分析。首先,我將通過查看所有頁面中返回的頂級分類的數(shù)量來查看與網(wǎng)站相關(guān)的分類。

分類

 

來自示例站點的分類數(shù)據(jù)

這似乎是該特定站點的關(guān)鍵主題的相當準確的代表。通過查看一個效果最好的頁面進行排名的單個查詢,我可以比較同一查詢在 Google 搜索結(jié)果中的其他排名頁面。

  • URL 1 |頂級類別:/法律和政府/與法律相關(guān)的(0.5099999904632568)共 1 個類別。
  • 未返回任何類別。
  • URL 3 |頂級類別:/互聯(lián)網(wǎng)與電信/移動與無線(0.6100000143051147)共 1 個類別。
  • URL 4 |頂級類別:/計算機與電子產(chǎn)品/軟件(0.5799999833106995)共有 2 個類別。
  • URL 5 |頂級類別:/互聯(lián)網(wǎng)與電信/移動與無線/移動應(yīng)用程序和附件(0.75)共有 1 個類別。
  • 未返回任何類別。
  • URL 7 |頂級類別:/計算機與電子/軟件/商業(yè)與生產(chǎn)力軟件(0.7099999785423279)共 2 個類別。
  • URL 8 |頂級類別:/法律和政府/與法律相關(guān)的(0.8999999761581421)共 3 個類別。
  • URL 9 |頂級類別:/參考/一般參考/類型指南和模板(0.6399999856948853)共有 1 個類別。
  • 未返回任何類別。

上方括號中的數(shù)字表示 Google 對頁面內(nèi)容與該分類相關(guān)的置信度。對于相同分類,第八個結(jié)果比第一個結(jié)果具有更高的置信度,因此,這似乎不是定義排名相關(guān)性的靈丹妙藥。此外,分類太寬泛導致無法滿足特定搜索主題的需要。

通過排名查看平均置信度,這兩個指標之間似乎沒有相關(guān)性,至少對于此數(shù)據(jù)集而言如此:

 

平均置信度排名分布圖

這兩種方法對網(wǎng)站進行規(guī)模審查是有意義的,以確保內(nèi)容類別易于理解,并且樣板或銷售內(nèi)容不會使你的頁面與你的主要專業(yè)知識領(lǐng)域無關(guān)。想一想,如果你出售工業(yè)用品,但是你的頁面返回 “Marketing(銷售)” 作為主要分類。似乎沒有一個強烈的跡象表明,分類相關(guān)性與你的排名有什么關(guān)系,至少在頁面級別如此。

情感

我不會在情感上花很多時間。在所有從 API 返回情感的頁面中,它們分為兩個區(qū)間:0.1 和 0.2,這幾乎是中立的情感。根據(jù)直方圖,很容易看出情感沒有太大價值。對于新聞或輿論網(wǎng)站而言,測量特定頁面的情感到中位數(shù)排名之間的相關(guān)性將是一個更加有趣的指標。

 

獨特頁面的情感柱狀圖

實體

在我看來,實體是 API 中最有趣的部分。這是在所有頁面中按顯著性salience(或與頁面的相關(guān)性)選擇的頂級實體。請注意,對于相同的術(shù)語(銷售清單),Google 會推斷出不同的類型,可能是錯誤的。這是由于這些術(shù)語出現(xiàn)在內(nèi)容中的不同上下文中引起的。

 

示例網(wǎng)站的頂級實體

然后,我分別查看了每個實體類型,并一起查看了該實體的顯著性與頁面的最佳排名位置之間是否存在任何關(guān)聯(lián)。對于每種類型,我匹配了與該類型匹配的頂級實體的顯著性(與頁面的整體相關(guān)性),按顯著性排序(降序)。

有些實體類型在所有示例中返回的顯著性為零,因此我從下面的圖表中省略了這些結(jié)果。

 

顯著性與最佳排名位置的相關(guān)性

“Consumer Good(消費性商品)” 實體類型具有最高的正相關(guān)性,皮爾森相關(guān)度Pearson correlation為 0.15854,盡管由于較低編號的排名更好,所以 “Person” 實體的結(jié)果最好,相關(guān)度為 -0.15483。這是一個非常小的樣本集,尤其是對于單個實體類型,我不能對數(shù)據(jù)做太多的判斷。我沒有發(fā)現(xiàn)任何具有強相關(guān)性的值,但是 “Person” 實體最有意義。網(wǎng)站通常都有關(guān)于其首席執(zhí)行官和其他主要雇員的頁面,這些頁面很可能在這些查詢的搜索結(jié)果方面做得好。

繼續(xù),當從整體上看站點,根據(jù)實體名稱和實體類型,出現(xiàn)了以下主題。

 

基于實體名稱和實體類型的主題

我模糊了幾個看起來過于具體的結(jié)果,以掩蓋網(wǎng)站的身份。從主題上講,名稱信息是在你(或競爭對手)的網(wǎng)站上局部查看其核心主題的一種好方法。這樣做僅基于示例網(wǎng)站的排名網(wǎng)址,而不是基于所有網(wǎng)站的可能網(wǎng)址(因為 Search Console 數(shù)據(jù)僅記錄 Google 中展示的頁面),但是結(jié)果會很有趣,尤其是當你使用像 Ahrefs 之類的工具提取一個網(wǎng)站的主要排名 URL,該工具會跟蹤許多查詢以及這些查詢的 Google 搜索結(jié)果。

實體數(shù)據(jù)中另一個有趣的部分是標記為 “CONSUMER_GOOD” 的實體傾向于 “看起來” 像我在看到 “知識結(jié)果Knowledge Results”的結(jié)果,即頁面右側(cè)的 Google 搜索結(jié)果。

 

Google 搜索結(jié)果

在我們的數(shù)據(jù)集中具有三個或三個以上關(guān)鍵字的 “Consumer Good(消費性商品)” 實體名稱中,有 5.8% 的知識結(jié)果與 Google 對該實體命名的結(jié)果相同。這意味著,如果你在 Google 中搜索術(shù)語或短語,則右側(cè)的框(例如,上面顯示 Linux 的知識結(jié)果)將顯示在搜索結(jié)果頁面中。由于 Google 會 “挑選” 代表實體的示例網(wǎng)頁,因此這是一個很好的機會,可以在搜索結(jié)果中識別出具有唯一特征的機會。同樣有趣的是,5.8% 的在 Google 中顯示這些知識結(jié)果名稱中,沒有一個實體的維基百科 URL 從自然語言 API 中返回。這很有趣,值得進行額外的分析。這將是非常有用的,特別是對于傳統(tǒng)的全球排名跟蹤工具(如 Ahrefs)數(shù)據(jù)庫中沒有的更深奧的主題。

如前所述,知識結(jié)果對于那些希望自己的內(nèi)容在 Google 中被收錄的網(wǎng)站所有者來說是非常重要的,因為它們在桌面搜索中加強高亮顯示。假設(shè),它們也很可能與 Google Discover 的知識庫主題保持一致,這是一款適用于 Android 和 iOS 的產(chǎn)品,它試圖根據(jù)用戶感興趣但沒有明確搜索的主題為用戶浮現(xiàn)內(nèi)容。

總結(jié)

本文介紹了 Google 的自然語言 API,分享了一些代碼,并研究了此 API 對網(wǎng)站所有者可能有用的方式。關(guān)鍵要點是:

  • 學習使用 Python 和 Jupyter 筆記本可以為你的數(shù)據(jù)收集任務(wù)打開到一個由令人難以置信的聰明和有才華的人建立的不可思議的 API 和開源項目(如 Pandas 和 NumPy)的世界。
  • Python 允許我為了一個特定目的快速提取和測試有關(guān) API 值的假設(shè)。
  • 通過 Google 的分類 API 傳遞網(wǎng)站頁面可能是一項很好的檢查,以確保其內(nèi)容分解成正確的主題分類。對于競爭對手的網(wǎng)站執(zhí)行此操作還可以提供有關(guān)在何處進行調(diào)整或創(chuàng)建內(nèi)容的指導。
  • 對于示例網(wǎng)站,Google 的情感評分似乎并不是一個有趣的指標,但是對于新聞或基于意見的網(wǎng)站,它可能是一個有趣的指標。
  • Google 發(fā)現(xiàn)的實體從整體上提供了更細化的網(wǎng)站的主題級別視圖,并且像分類一樣,在競爭性內(nèi)容分析中使用將非常有趣。
  • 實體可以幫助定義機會,使你的內(nèi)容可以與搜索結(jié)果或 Google Discover 結(jié)果中的 Google 知識塊保持一致。我們將 5.8% 的結(jié)果設(shè)置為更長的(字計數(shù))“Consumer Goods(消費商品)” 實體,顯示這些結(jié)果,對于某些網(wǎng)站來說,可能有機會更好地優(yōu)化這些實體的頁面顯著性分數(shù),從而有更好的機會在 Google 搜索結(jié)果或 Google Discovers 建議中抓住這個重要作用的位置。

 

責任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2013-04-27 14:32:01

谷歌

2024-11-07 15:49:34

2017-04-17 15:03:16

Python自然語言處理

2021-11-12 15:43:10

Python自然語言數(shù)據(jù)

2020-04-24 10:53:08

自然語言處理NLP是人工智能

2021-05-13 07:17:13

Snownlp自然語言處理庫

2017-10-19 17:05:58

深度學習自然語言

2024-04-24 11:38:46

語言模型NLP人工智能

2009-11-25 14:25:14

PHP自然語言排序

2024-02-05 14:18:07

自然語言處理

2021-05-17 09:00:00

自然語言人工智能技術(shù)

2020-02-25 12:00:53

自然語言開源工具

2020-02-25 23:28:50

工具代碼開發(fā)

2017-05-05 15:34:49

自然語言處理

2020-11-12 18:57:14

摘要PythonNLP

2021-05-18 07:15:37

Python

2023-05-14 23:42:58

ChatGPTOpenAI自然語言

2023-08-07 08:41:45

自然語言模型因果推理

2009-11-25 14:31:43

PHP自然語言倒序

2021-03-03 09:00:00

自然語言數(shù)據(jù)科學人工智能
點贊
收藏

51CTO技術(shù)棧公眾號