成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[389802]]

Google API 可以凸顯出有關 Google 如何對網站進行分類的線索,以及如何調整內容以改進搜索結果的方法。

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

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

了解數據類型

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

實體

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

 

實體

情感

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

 

情感

語法

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

 

語法

分類

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

 

分類

提取數據

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

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

 

所有頁面的點擊次數柱狀圖

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

 

部分網頁的點擊次數柱狀圖

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

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

首先,激活一個新的虛擬環境并安裝庫。用環境的唯一名稱替換 <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 筆記本運行此代碼,因為使用同一內核注釋和重試代碼更加容易。

  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 云主控臺中創建一個項目,啟用該 API 并下載服務帳戶密鑰。之后,你應該擁有一個類似于以下內容的 JSON 文件:

 

services.json 文件

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

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

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

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

 

拉取 API 數據的輸出

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

處理數據

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

分類

 

來自示例站點的分類數據

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

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

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

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

 

平均置信度排名分布圖

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

情感

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

 

獨特頁面的情感柱狀圖

實體

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

 

示例網站的頂級實體

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

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

 

顯著性與最佳排名位置的相關性

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

繼續,當從整體上看站點,根據實體名稱和實體類型,出現了以下主題。

 

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

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

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

 

Google 搜索結果

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

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

總結

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

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

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2013-04-27 14:32:01

谷歌

2024-11-07 15:49:34

2017-04-17 15:03:16

Python自然語言處理

2020-04-24 10:53:08

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

2021-11-12 15:43:10

Python自然語言數據

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

自然語言人工智能技術

2020-02-25 12:00:53

自然語言開源工具

2017-05-05 15:34:49

自然語言處理

2020-02-25 23:28:50

工具代碼開發

2021-05-18 07:15:37

Python

2020-11-12 18:57:14

摘要PythonNLP

2009-11-25 14:31:43

PHP自然語言倒序

2023-05-14 23:42:58

ChatGPTOpenAI自然語言

2023-08-07 08:41:45

自然語言模型因果推理

2023-08-04 10:18:15

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91麻豆产精品久久久久久夏晴子 | 日韩在线小视频 | 国产真实精品久久二三区 | 久久毛片网站 | 日韩欧美三级电影在线观看 | 国产高清视频在线观看 | 成年网站在线观看 | 日本aa毛片a级毛片免费观看 | 国产精品久久国产精品 | 美女视频三区 | 国产黄色在线观看 | 日本超碰| 国产精品视频观看 | 精精国产xxxx视频在线播放 | 久久最新精品 | 91精品国产自产精品男人的天堂 | 在线观看成人小视频 | 国内精品伊人久久久久网站 | 日韩欧美二区 | 亚洲一区成人 | 黑人巨大精品欧美一区二区免费 | 国产女人精品视频 | 一级无毛片| 久久久精品网 | 国产精品成av人在线视午夜片 | 欧美日韩亚 | 日韩欧美在线一区 | 国产精品视频一二三区 | 久草在线中文888 | 综合国产 | 北条麻妃99精品青青久久主播 | 精品网 | 国产欧美性成人精品午夜 | 国产精品美女在线观看 | 中文字幕在线观看 | 久久狠狠 | 最新中文字幕一区 | www.久草.com| 国产区在线免费观看 | 久久国产精品精品 | 色婷婷久久久久swag精品 |