Azure AI 102 - Ngày 2

  • Ngày 2:

    • Sáng: Lựa chọn dịch vụ Azure AI phù hợp cho từng loại bài toán (Computer Vision, NLP, Speech, etc.).

    • Chiều: Tìm hiểu Content Moderation: Azure AI Content Safety, lọc văn bản và hình ảnh độc hại.

    • Tối: Ôn tập và làm bài tập:

      • Đề xuất dịch vụ Azure AI cho các tình huống thực tế.

      • Tạo một giải pháp lọc văn bản đơn giản với Azure AI Content Safety.

Lựa chọn dịch vụ Azure AI phù hợp cho từng loại bài toán (Computer Vision, NLP, Speech, etc.)

1. Computer Vision

Computer Vision liên quan đến việc cho phép máy tính hiểu và diễn giải hình ảnh và video. Azure cung cấp các dịch vụ sau cho Computer Vision:

  • Azure Computer Vision: Dịch vụ này giúp phân tích hình ảnh và video để nhận dạng đối tượng, văn bản (OCR), nhận dạng khuôn mặt, và hơn thế nữa. Nó phù hợp cho các ứng dụng yêu cầu nhận diện đối tượng, phân loại hình ảnh, và trích xuất thông tin từ hình ảnh.

  • Custom Vision: Nếu bạn có nhu cầu tạo mô hình phân loại hình ảnh hoặc phát hiện đối tượng theo yêu cầu cụ thể, dịch vụ Custom Vision cho phép bạn tải lên dữ liệu của riêng mình và huấn luyện mô hình tùy chỉnh.

  • Face API: Đây là dịch vụ dành riêng cho nhận diện và phân tích khuôn mặt. Nó cung cấp khả năng nhận diện khuôn mặt, xác định biểu cảm và thuộc tính khuôn mặt.

  • Form Recognizer: Dịch vụ này giúp trích xuất thông tin từ các biểu mẫu và tài liệu, bao gồm cả tài liệu có cấu trúc và không cấu trúc.

2. Natural Language Processing (NLP)

NLP là lĩnh vực liên quan đến việc xử lý và hiểu ngôn ngữ tự nhiên. Các dịch vụ Azure dành cho NLP bao gồm:

  • Text Analytics: Dịch vụ này cung cấp các tính năng như phân tích cảm xúc, trích xuất từ khóa, nhận diện thực thể (entity recognition), và phân loại ngôn ngữ. Nó rất hữu ích cho việc phân tích ý kiến khách hàng, trích xuất thông tin từ văn bản và theo dõi các chủ đề.

  • Language Understanding (LUIS): Dịch vụ này giúp tạo ra các mô hình hiểu ngôn ngữ tự nhiên tùy chỉnh. LUIS đặc biệt hữu ích trong việc xây dựng các chatbot thông minh và các ứng dụng yêu cầu phân tích ý định của người dùng.

  • QnA Maker: Dịch vụ này giúp tạo ra các hệ thống hỏi đáp từ các tài liệu, URL, và file FAQ. Nó phù hợp cho việc xây dựng các hệ thống hỗ trợ tự động và chatbot hỏi đáp.

3. Speech

Công nghệ Speech liên quan đến việc chuyển đổi giữa giọng nói và văn bản. Các dịch vụ Azure cho Speech bao gồm:

  • Speech to Text: Dịch vụ này chuyển đổi giọng nói thành văn bản, giúp phân tích và xử lý dữ liệu âm thanh. Nó phù hợp cho các ứng dụng như ghi âm cuộc họp, dịch vụ khách hàng qua giọng nói, và phân tích cuộc gọi.

  • Text to Speech: Dịch vụ này chuyển đổi văn bản thành giọng nói, cung cấp các giọng nói tự nhiên và tương tác. Nó hữu ích cho việc tạo ra các ứng dụng đọc văn bản, trợ lý ảo, và hệ thống thông báo bằng giọng nói.

  • Speech Translation: Dịch vụ này không chỉ chuyển đổi giọng nói thành văn bản mà còn dịch nó sang ngôn ngữ khác. Nó phù hợp cho các ứng dụng yêu cầu dịch trực tiếp và giao tiếp đa ngôn ngữ.

  • Speaker Recognition: Dịch vụ này giúp nhận diện và xác minh danh tính của người nói, phù hợp cho các ứng dụng bảo mật và cá nhân hóa.

Lựa chọn Dịch vụ Phù Hợp

Để lựa chọn dịch vụ Azure AI phù hợp, bạn cần xem xét các yêu cầu cụ thể của bài toán và các tính năng mà mỗi dịch vụ cung cấp. Dưới đây là một số bước để giúp bạn lựa chọn đúng dịch vụ:

  1. Xác định mục tiêu cụ thể của bài toán: Bạn cần nhận diện đối tượng trong hình ảnh, phân tích cảm xúc từ văn bản, hay chuyển đổi giọng nói thành văn bản?

  2. Đánh giá dữ liệu sẵn có: Bạn có dữ liệu hình ảnh, văn bản, hay âm thanh? Khối lượng dữ liệu lớn hay nhỏ?

  3. Cân nhắc tính linh hoạt và khả năng tùy chỉnh: Bạn cần một mô hình tùy chỉnh hay sử dụng các mô hình có sẵn?

  4. Xem xét khả năng tích hợp: Dịch vụ có dễ dàng tích hợp vào hệ thống hiện tại của bạn không?

  5. Đánh giá chi phí: Dịch vụ có phù hợp với ngân sách của bạn không?

Tìm hiểu Content Moderation: Azure AI Content Safety, lọc văn bản và hình ảnh độc hại.

Content Moderation là một khía cạnh quan trọng trong việc quản lý nội dung trực tuyến, nhằm bảo đảm an toàn cho người dùng và bảo vệ uy tín của nền tảng. Azure AI cung cấp các dịch vụ mạnh mẽ để lọc và loại bỏ nội dung độc hại từ văn bản và hình ảnh. Dưới đây là bài giảng chi tiết về Azure AI Content Safety, bao gồm cách lọc văn bản và hình ảnh độc hại.

1. Giới thiệu về Azure AI Content Safety

Azure AI Content Safety là một bộ dịch vụ do Microsoft Azure cung cấp, được thiết kế để phát hiện và loại bỏ nội dung không phù hợp hoặc độc hại từ các ứng dụng và dịch vụ trực tuyến. Các dịch vụ này giúp bảo vệ người dùng khỏi nội dung gây hại, đồng thời hỗ trợ các doanh nghiệp duy trì môi trường an toàn và lành mạnh.

2. Lọc Văn Bản Độc Hại

Text Moderation là dịch vụ của Azure AI dành cho việc phát hiện và lọc nội dung văn bản không phù hợp. Dưới đây là các tính năng chính:

  • Phát Hiện Ngôn Ngữ Thô Tục: Dịch vụ có thể phát hiện và gắn cờ các từ ngữ thô tục, xúc phạm hoặc không phù hợp trong nhiều ngôn ngữ khác nhau.

  • Nhận Diện Nội Dung Quấy Rối và Bắt Nạt: Azure AI Content Safety có khả năng nhận diện các tin nhắn quấy rối, bắt nạt và các nội dung gây hại khác.

  • Nhận Diện Nội Dung Nhạy Cảm: Dịch vụ cũng có thể phát hiện các nội dung liên quan đến bạo lực, khủng bố, và các chủ đề nhạy cảm khác.

  • Lọc Spam: Azure AI Content Safety có thể phát hiện và loại bỏ các nội dung spam, bảo vệ người dùng khỏi các tin nhắn không mong muốn và lừa đảo.

Cách Sử Dụng:

  1. Kết nối với API: Sử dụng API Text Moderation của Azure để gửi văn bản cần kiểm tra.

  2. Nhận Kết Quả: API sẽ trả về các kết quả phân tích, bao gồm các chỉ số về độ phù hợp của nội dung.

  3. Hành Động: Tùy thuộc vào kết quả, bạn có thể quyết định chặn, cảnh báo hoặc gỡ bỏ nội dung không phù hợp.

3. Lọc Hình Ảnh Độc Hại

Image Moderation là dịch vụ của Azure AI dành cho việc phát hiện và lọc nội dung hình ảnh không phù hợp. Các tính năng chính bao gồm:

  • Phát Hiện Ảnh Người Lớn: Dịch vụ có thể phát hiện và gắn cờ các hình ảnh người lớn, bao gồm ảnh khỏa thân hoặc ảnh khiêu dâm.

  • Nhận Diện Ảnh Bạo Lực: Azure AI Content Safety có khả năng phát hiện các hình ảnh chứa nội dung bạo lực hoặc kinh dị.

  • Nhận Diện Nội Dung Gây Phẫn Nộ: Dịch vụ có thể phát hiện các hình ảnh có nội dung gây phẫn nộ, xúc phạm hoặc không phù hợp.

  • Kiểm Tra Hình Ảnh Người Dùng: Dịch vụ có thể kiểm tra và gắn cờ các hình ảnh chứa nội dung nhạy cảm hoặc không phù hợp được tải lên bởi người dùng.

Cách Sử Dụng:

  1. Kết nối với API: Sử dụng API Image Moderation của Azure để gửi hình ảnh cần kiểm tra.

  2. Nhận Kết Quả: API sẽ trả về các kết quả phân tích, bao gồm các chỉ số về độ phù hợp của nội dung.

  3. Hành Động: Dựa trên kết quả, bạn có thể quyết định chặn, cảnh báo hoặc gỡ bỏ hình ảnh không phù hợp.

4. Tích Hợp Azure AI Content Safety

Việc tích hợp Azure AI Content Safety vào ứng dụng của bạn bao gồm các bước sau:

  1. Đăng ký Azure Account: Tạo tài khoản Azure nếu bạn chưa có.

  2. Tạo Cognitive Services Resource: Tạo tài nguyên dịch vụ Cognitive Services trên Azure Portal.

  3. Lấy API Key và Endpoint: Nhận API key và endpoint từ trang quản lý tài nguyên của bạn.

  4. Tích hợp API: Sử dụng SDK của Azure hoặc gọi trực tiếp API từ ứng dụng của bạn để gửi nội dung cần kiểm tra.

  5. Xử lý Kết Quả: Xây dựng logic xử lý kết quả trả về từ API, bao gồm việc chặn, cảnh báo hoặc gỡ bỏ nội dung không phù hợp.

5. Lợi Ích của Azure AI Content Safety

  • Bảo Vệ Người Dùng: Giúp bảo vệ người dùng khỏi nội dung độc hại, tạo ra môi trường an toàn và lành mạnh.

  • Tiết Kiệm Thời Gian và Chi Phí: Tự động hóa quá trình kiểm duyệt nội dung, giảm thiểu sự cần thiết của kiểm duyệt thủ công.

  • Cải Thiện Uy Tín: Duy trì uy tín và lòng tin của người dùng đối với nền tảng của bạn.

  • Tuân Thủ Pháp Luật: Đảm bảo tuân thủ các quy định pháp luật về nội dung trực tuyến.

Bài tập

Đề xuất dịch vụ Azure AI cho các tình huống thực tế

Tình Huống 1: Phân Tích Cảm Xúc Khách Hàng

Mô tả: Một công ty muốn phân tích phản hồi của khách hàng từ các đánh giá và nhận xét để cải thiện chất lượng dịch vụ.

Dịch vụ Azure AI đề xuất:

  • Text Analytics: Dịch vụ này cung cấp các tính năng như phân tích cảm xúc, trích xuất từ khóa, và nhận diện thực thể. Nó sẽ giúp công ty hiểu được khách hàng đang cảm thấy thế nào và nhận diện các vấn đề cụ thể từ phản hồi.

Cách sử dụng:

  • Tải dữ liệu phản hồi của khách hàng lên Azure.

  • Sử dụng API Text Analytics để phân tích cảm xúc và trích xuất thông tin quan trọng.

  • Sử dụng kết quả phân tích để đưa ra các cải tiến dịch vụ cụ thể.

Tình Huống 2: Tự Động Kiểm Duyệt Nội Dung Trực Tuyến

Mô tả: Một nền tảng mạng xã hội muốn tự động kiểm duyệt các bài đăng và hình ảnh để đảm bảo không có nội dung độc hại.

Dịch vụ Azure AI đề xuất:

  • Content Moderator: Dịch vụ này giúp phát hiện và gắn cờ nội dung không phù hợp trong văn bản, hình ảnh và video.

  • Text Moderation: Để kiểm duyệt văn bản.

  • Image Moderation: Để kiểm duyệt hình ảnh.

Cách sử dụng:

  • Tích hợp API Content Moderator vào nền tảng mạng xã hội.

  • Tự động kiểm tra các bài đăng và hình ảnh mới tải lên.

  • Gắn cờ hoặc gỡ bỏ nội dung không phù hợp dựa trên kết quả kiểm duyệt.

Tình Huống 3: Hỗ Trợ Trực Tuyến Qua Chatbot

Mô tả: Một công ty muốn cung cấp dịch vụ hỗ trợ khách hàng tự động qua chatbot.

Dịch vụ Azure AI đề xuất:

  • Azure Bot Service: Dịch vụ này giúp tạo và quản lý các chatbot thông minh.

  • Language Understanding (LUIS): Để xây dựng mô hình hiểu ngôn ngữ tự nhiên, giúp chatbot hiểu được ý định của người dùng.

Cách sử dụng:

  • Tạo chatbot bằng Azure Bot Service.

  • Tích hợp LUIS để chatbot có thể hiểu và phản hồi các câu hỏi của khách hàng một cách tự nhiên.

  • Triển khai chatbot trên các kênh giao tiếp như trang web, Facebook Messenger, và Microsoft Teams.

Tình Huống 4: Nhận Diện Khuôn Mặt Trong An Ninh

Mô tả: Một công ty an ninh muốn sử dụng công nghệ nhận diện khuôn mặt để kiểm tra ra vào tại các cổng bảo vệ.

Dịch vụ Azure AI đề xuất:

  • Face API: Dịch vụ này cung cấp các khả năng nhận diện và xác minh khuôn mặt.

Cách sử dụng:

  • Triển khai camera tại các cổng ra vào.

  • Kết nối camera với Face API để nhận diện khuôn mặt của nhân viên và khách hàng.

  • Xác minh danh tính và cấp quyền truy cập dựa trên kết quả nhận diện.

Tình Huống 5: Dịch Tự Động Trong Ứng Dụng Đa Ngôn Ngữ

Mô tả: Một ứng dụng học ngoại ngữ muốn cung cấp tính năng dịch tự động giữa nhiều ngôn ngữ khác nhau.

Dịch vụ Azure AI đề xuất:

  • Translator Text: Dịch vụ này cung cấp khả năng dịch văn bản giữa nhiều ngôn ngữ.

Cách sử dụng:

  • Tích hợp API Translator Text vào ứng dụng.

  • Cho phép người dùng nhập văn bản và chọn ngôn ngữ cần dịch.

  • Sử dụng API để dịch văn bản và hiển thị kết quả cho người dùng.

Tạo một giải pháp lọc văn bản đơn giản với Azure AI Content Safety

Bước 1: Thiết lập Terraform

  1. Cài đặt Terraform:

    • Tải Terraform từ terraform.io và cài đặt nó theo hướng dẫn trên trang web.
  2. Cài đặt Azure CLI (nếu bạn chưa có):

Bước 2: Tạo Cấu Hình Terraform

  1. Tạo thư mục dự án Terraform:

     mkdir terraform-content-moderator
     cd terraform-content-moderator
    
  2. Tạo tệp cấu hình Terraform: Tạo tệp main.tf và dán nội dung sau vào:

     provider "azurerm" {
       features {}
     }
    
     resource "azurerm_resource_group" "example" {
       name     = "content-moderator-rg"
       location = "East US"
     }
    
     resource "azurerm_cognitive_account" "example" {
       name                = "contentmoderatorexample"
       resource_group_name = azurerm_resource_group.example.name
       location            = azurerm_resource_group.example.location
       kind                = "CognitiveServices"
       sku_name            = "S0"
    
       identity {
         type = "SystemAssigned"
       }
    
       tags = {
         Environment = "Test"
       }
     }
    
     output "endpoint" {
       value = azurerm_cognitive_account.example.endpoint
     }
    
     output "api_key" {
       value = azurerm_cognitive_account.example.primary_access_key
       sensitive = true
     }
    

Bước 3: Triển khai cơ sở hạ tầng với Terraform

  1. Khởi tạo Terraform:

     terraform init
    
  2. Kiểm tra cấu hình Terraform:

     terraform plan
    
  3. Triển khai cơ sở hạ tầng:

     terraform apply
    
    • Nhập yes khi được hỏi để xác nhận triển khai.
  4. Lưu thông tin đầu ra:

    • Sau khi triển khai xong, Terraform sẽ xuất ra endpointapi_key. Lưu lại thông tin này để sử dụng sau.

Bước 4: Viết mã Python để sử dụng API Content Moderator

  1. Cài đặt thư viện yêu cầu:

     pip install requests
    
  2. Tạo tệp Python: Tạo tệp moderate_text.py và dán nội dung sau vào:

     import requests
    
     # Thay thế bằng API Key và Endpoint của bạn từ Terraform output
     subscription_key = "YOUR_API_KEY"
     endpoint = "YOUR_ENDPOINT"
    
     text_moderation_url = endpoint + "/contentmoderator/moderate/v1.0/ProcessText/Screen"
    
     headers = {
         'Ocp-Apim-Subscription-Key': subscription_key,
         'Content-Type': 'text/plain'
     }
    
     text_to_moderate = "This is an example text with some inappropriate content: Fucking it."
    
     response = requests.post(
         text_moderation_url,
         headers=headers,
         data=text_to_moderate.encode('utf-8')
     )
    
     if response.status_code == 200:
         moderation_results = response.json()
         print("Moderation Results:")
         print(moderation_results)
     else:
         print(f"Failed to moderate text. Status code: {response.status_code}")
         print(response.json())
    

Bước 5: Chạy và Kiểm Tra Kết Quả

  1. Chạy mã:

     python moderate_text.py
    
  2. Kiểm tra kết quả: Kết quả sẽ được in ra màn hình console. Bạn sẽ thấy thông tin về mức độ phù hợp của nội dung văn bản mà bạn đã kiểm duyệt.

Kết quả sẽ dạng như sau:

Moderation Results:
{'OriginalText': 'This is an example text with some inappropriate content: Fucking it.', 'NormalizedText': '   example text   inappropriate content: Fucking .', 'Misrepresentation': None, 'Language': 'eng', 'Terms': [{'Index': 41, 'OriginalIndex': 57, 'ListId': 0, 'Term': 'fucking'}], 'Status': {'Code': 3000, 'Description': 'OK', 'Exception': None}, 'TrackingId': '903bc680-5d8a-4fa4-8b02-5865d7e8ff46'}

Bài tập thêm: Text analysis

Xây dựng mô hình AI đánh giá các review:

Good Hotel and staff
The Royal Hotel, London, UK
3/2/2018
Clean rooms, good service, great location near Buckingham Palace and Westminster Abbey, and so on. We thoroughly enjoyed our stay. The courtyard is very peaceful and we went to a restaurant which is part of the same group and is Indian ( West coast so plenty of fish) with a Michelin Star. We had the taster menu which was fabulous. The rooms were very well appointed with a kitchen, lounge, bedroom and enormous bathroom. Thoroughly recommended.
Tired hotel with poor service
The Royal Hotel, London, United Kingdom
5/6/2018
This is a old hotel (has been around since 1950's) and the room furnishings are average - becoming a bit old now and require changing. The internet didn't work and had to come to one of their office rooms to check in for my flight home. The website says it's close to the British Museum, but it's too far to walk.
Good location and helpful staff, but on a busy road.
The Lombard Hotel, San Francisco, USA
8/16/2018
We stayed here in August after reading reviews. We were very pleased with location, just behind Chestnut Street, a cosmopolitan and trendy area with plenty of restaurants to choose from. The
Marina district was lovely to wander through, very interesting houses. Make sure to walk to the San Francisco Museum of Fine Arts and the Marina to get a good view of Golden Gate bridge and the city. On a bus route and easy to get into centre. Rooms were clean with plenty of room and staff were friendly and helpful. The only down side was the noise from Lombard Street so ask to have a room furthest away from traffic noise.
Very noisy and rooms are tiny
The Lombard Hotel, San Francisco, USA
9/5/2018
Hotel is located on Lombard street which is a very busy SIX lane street directly off the Golden Gate Bridge. Traffic from early morning until late at night especially on weekends. Noise would not be so bad if rooms were better insulated but they are not. Had to put cotton balls in my ears to be able to sleep--was too tired to enjoy the city the next day. Rooms are TINY. I picked the room because it had two queen size beds--but the room barely had space to fit them. With family of four in the room it was tight. With all that said, rooms are clean and they've made an effort to update them. The hotel is in Marina district with lots of good places to eat, within walking distance to Presidio. May be good hotel for young stay-up-late adults on a budget
Un hôtel agréable
L'Hotel Buckingham, Londres, UK
J’adore cet hôtel. Le personnel est très amical et les chambres sont confortables.

Code sample:

.env:

COG_SERVICE_ENDPOINT=your_cognitive_services_endpoint
COG_SERVICE_KEY=your_cognitive_services_key

text-analysis.py

from dotenv import load_dotenv
import os

# Import namespaces

def main():
    try:
        # Get Configuration Settings
        load_dotenv()
        cog_endpoint = os.getenv('COG_SERVICE_ENDPOINT')
        cog_key = os.getenv('COG_SERVICE_KEY')

        # Create client using endpoint and key

        # Analyze each text file in the reviews folder
        reviews_folder = 'reviews'
        for file_name in os.listdir(reviews_folder):
            # Read the file contents
            print('\\n-------------\\n' + file_name)
            text = open(os.path.join(reviews_folder, file_name), encoding='utf8').read()
            print('\\n' + text)

            # Get language

            # Get sentiment

            # Get key phrases

            # Get entities

            # Get linked entities

    except Exception as ex:
        print(ex)

if __name__ == "__main__":
    main()

Giải bài tập thêm

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = "content-moderator-rg"
  location = "East US"
}

resource "azurerm_cognitive_account" "example" {
  name                = "contentmoderatorexample"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  kind                = "CognitiveServices"
  sku_name            = "S0"

  identity {
    type = "SystemAssigned"
  }

  tags = {
    Environment = "Test"
  }
}

output "endpoint" {
  value = azurerm_cognitive_account.example.endpoint
}

output "api_key" {
  value = azurerm_cognitive_account.example.primary_access_key
  sensitive = true
}

Tài liệu tham khảo: https://learn.microsoft.com/en-us/python/api/overview/azure/ai-textanalytics-readme?view=azure-python

# <https://learn.microsoft.com/en-us/python/api/overview/azure/ai-textanalytics-readme?view=azure-python>
from dotenv import load_dotenv
import os

# Import namespaces
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

def main():
    try:
        # Get Configuration Settings
        load_dotenv()
        cog_endpoint = os.getenv('COG_SERVICE_ENDPOINT')
        cog_key = os.getenv('COG_SERVICE_KEY')

        # Create client using endpoint and key
        text_analytics_client = TextAnalyticsClient(cog_endpoint, AzureKeyCredential(cog_key))

        # Analyze each text file in the reviews folder
        reviews_folder = 'reviews'
        for file_name in os.listdir(reviews_folder):
            # Read the file contents
            print('\\n-------------\\n' + file_name)
            text = open(os.path.join(reviews_folder, file_name), encoding='utf8').read()
            print('\\n' + text)

            # Get language
            language = text_analytics_client.detect_language(documents=[text])
            print("Language: ", language[0].primary_language.name)
            # Get sentiment
            sentiment = text_analytics_client.analyze_sentiment(documents=[text])
            print("Sentiment: ", sentiment[0].sentiment)
            # Get key phrases
            key_phrases = text_analytics_client.extract_key_phrases(documents=[text])
            print("Key Phrases: ", key_phrases[0].key_phrases)
            # Get entities
            entities = text_analytics_client.recognize_entities(documents=[text])
            print("Entities: ", [entity.text for entity in entities[0].entities])
            # Get linked entities
            linked_entities = text_analytics_client.recognize_linked_entities(documents=[text])
            print("Linked Entities: ", [linked_entity.name for linked_entity in linked_entities[0].entities])

    except Exception as ex:
        print(ex)

if __name__ == "__main__":
    main()

Kết quả:

python text-analysis.py

-------------
review1.txt

Good Hotel and staff
The Royal Hotel, London, UK
3/2/2018
Clean rooms, good service, great location near Buckingham Palace and Westminster Abbey, and so on. We thoroughly enjoyed our stay. The courtyard is very peaceful and we went to a restaurant which is part of the same group and is Indian ( West coast so plenty of fish) with a Michelin Star. We had the taster menu which was fabulous. The rooms were very well appointed with a kitchen, lounge, bedroom and enormous bathroom. Thoroughly recommended.
Language:  English
Sentiment:  positive
Key Phrases:  ['The Royal Hotel', 'Good Hotel', 'good service', 'great location', 'Buckingham Palace', 'Westminster Abbey', 'same group', 'West coast', 'Michelin Star', 'taster menu', 'enormous bathroom', 'Clean rooms', 'staff', 'London', 'UK', 'stay', 'courtyard', 'restaurant', 'part', 'plenty', 'fish', 'kitchen', 'lounge', 'bedroom']
Entities:  ['staff', 'Royal Hotel', 'London', 'UK', '3/2/2018', 'rooms', 'Buckingham Palace', 'Westminster Abbey', 'stay', 'courtyard', 'restaurant', 'Indian', 'West coast', 'fish', 'rooms', 'kitchen', 'lounge', 'bedroom', 'bathroom']
Linked Entities:  ['GOOD Music', 'Hotel', 'The Royal Hotel', 'London', 'Buckingham Palace', 'Westminster Abbey', 'India', 'West Coast Main Line', 'Michelin Guide']

-------------
review2.txt

Tired hotel with poor service
The Royal Hotel, London, United Kingdom
5/6/2018
This is a old hotel (has been around since 1950's) and the room furnishings are average - becoming a bit old now and require changing. The internet didn't work and had to come to one of their office rooms to check in for my flight home. The website says it's close to the British Museum, but it's too far to walk.
Language:  English
Sentiment:  negative
Key Phrases:  ['The Royal Hotel', 'Tired hotel', 'old hotel', 'poor service', 'United Kingdom', 'room furnishings', 'office rooms', 'flight home', 'British Museum', 'London', 'changing', 'internet', 'website', '1950']
Entities:  ['hotel', 'Hotel', 'London', 'United Kingdom', '5/6/2018', 'hotel', 'since 1950', 'room', 'now', 'internet', 'one', 'office rooms', 'flight', 'home', 'British Museum']
Linked Entities:  ['The Royal Hotel', 'London', 'British Museum']

-------------
review3.txt

Good location and helpful staff, but on a busy road.
The Lombard Hotel, San Francisco, USA
8/16/2018
We stayed here in August after reading reviews. We were very pleased with location, just behind Chestnut Street, a cosmopolitan and trendy area with plenty of restaurants to choose from. The
Marina district was lovely to wander through, very interesting houses. Make sure to walk to the San Francisco Museum of Fine Arts and the Marina to get a good view of Golden Gate bridge and the city. On a bus route and easy to get into centre. Rooms were clean with plenty of room and staff were friendly and helpful. The only down side was the noise from Lombard Street so ask to have a room furthest away from traffic noise.
Language:  English
Sentiment:  mixed
Key Phrases:  ['Golden Gate bridge', 'The Lombard Hotel', 'The Marina district', 'San Francisco Museum', 'Lombard Street', 'busy road', 'Chestnut Street', 'trendy area', 'interesting houses', 'Fine Arts', 'good view', 'bus route', 'down side', 'Good location', 'helpful staff', 'traffic noise', 'USA', 'We', 'August', 'reviews', 'cosmopolitan', 'plenty', 'restaurants', 'city', 'centre', 'Rooms']
Entities:  ['staff', 'road', 'Lombard Hotel', 'San Francisco', 'USA', '8/16/2018', 'August', 'Chestnut Street', 'restaurants', 'Marina district', 'houses', 'San Francisco Museum of Fine Arts', 'Marina', 'Golden Gate bridge', 'city', 'centre', 'Rooms', 'staff', 'Lombard Street', 'room']
Linked Entities:  ['Lombardy', 'Hotel', 'San Francisco', 'Chestnut Street (Philadelphia)', 'Marina District, San Francisco', 'Museum of Fine Arts, Boston', 'Golden Gate Bridge', 'Room', 'Lombard Street (San Francisco)']

-------------
review4.txt

Very noisy and rooms are tiny
The Lombard Hotel, San Francisco, USA
9/5/2018
Hotel is located on Lombard street which is a very busy SIX lane street directly off the Golden Gate Bridge. Traffic from early morning until late at night especially on weekends. Noise would not be so bad if rooms were better insulated but they are not. Had to put cotton balls in my ears to be able to sleep--was too tired to enjoy the city the next day. Rooms are TINY. I picked the room because it had two queen size beds--but the room barely had space to fit them. With family of four in the room it was tight. With all that said, rooms are clean and they've made an effort to update them. The hotel is in Marina district with lots of good places to eat, within walking distance to Presidio. May be good hotel for young stay-up-late adults on a budget

Language:  English
Sentiment:  mixed
Key Phrases:  ['two queen size beds', 'busy SIX lane street', 'Golden Gate Bridge', 'The Lombard Hotel', 'Lombard street', 'San Francisco', 'early morning', 'cotton balls', 'Marina district', 'good places', 'walking distance', 'late adults', 'good hotel', 'rooms', 'USA', 'Traffic', 'night', 'weekends', 'Noise', 'ears', 'city', 'TINY', 'space', 'family', 'effort', 'lots', 'Presidio', 'young', 'budget']
Entities:  ['rooms', 'Lombard Hotel', 'San Francisco', 'USA', '9/5/2018', 'Hotel', 'Lombard street', 'SIX', 'Golden Gate Bridge', 'Traffic', 'early morning until late at night', 'weekends', 'rooms', 'cotton balls', 'the next day', 'Rooms', 'room', 'two', 'beds', 'room', 'four', 'room', 'rooms', 'hotel', 'Marina district', 'Presidio', 'adults']
Linked Entities:  ['Lombard, Illinois', 'Hotel', 'San Francisco', 'Lombard Street (San Francisco)', 'Golden Gate Bridge', 'Traffic', 'Noise rock', 'Room', 'Marina District, San Francisco', 'Presidio of San Francisco', 'May']

-------------
review5.txt

Un hôtel agréable
L'Hotel Buckingham, Londres, UK
J’adore cet hôtel. Le personnel est très amical et les chambres sont confortables.
Language:  French
Sentiment:  positive
Key Phrases:  ['hôtel agréable', "L'Hotel Buckingham", 'Londres', 'UK', 'personnel', 'chambres']
Entities:  ['hôtel', 'Hotel Buckingham', 'Londres', 'UK', 'hôtel', 'personnel', 'amical', 'chambres']
Linked Entities:  ['United Nations', "L'Hôtel", 'Buckingham', 'London', 'United Kingdom']