参考
Natural Language API の基本 | Cloud Natural Language API ドキュメント | Google Cloud
python-docs-samples/snippets.py at master · GoogleCloudPlatform/python-docs-samples · GitHub
https://cloud.google.com/natural-language/docs/analyzing-entity-sentiment
https://cloud.google.com/natural-language/docs/reference/rest/v1/Entity?hl=ja#Type
インプットテキスト
AIスピーカー「アレクサ」に潜む弱点 部屋に侵入される恐れも - ライブドアニュース
アマゾンのAIスピーカー「エコー(アレクサ)」の発売以来、急速に人気が高まってきたスマート・デバイスの音声操作機能。だが、最近そこに思わぬセキュリティ・ホールが発見された。
私たち人間には聞き取れないが、機械にだけは聞き取れるサブリミナル・メッセージを音声や音楽などに忍ばせることで、スマホやAIスピーカーを外部の第三者が自由自在に操れるというのだ。
このショッキングな研究成果を発表したのは、米カリフォルニア大学バークレイ校の科学者チーム。彼らは録音された音声メッセージや音楽に巧妙な命令を忍ばせ、これをユーチューブなどから流すことで、AIスピーカーのようなスマート・デバイスを秘かに操作することに成功した。
これにより本来の利用者がスマート・デバイスの電源を入れた状態で音楽を聴いたり、動画を見たりしている間に、(自分のアカウントを通じて)悪意を持った第三者から勝手にオンライン・ショッピングをされたり、自分のお金をどこかに送金されたり、甚だしい場合にはドアのロックを外されて部屋に侵入されたりする恐れが出てきたという。
サンプルコード
# -*- coding: utf-8 -*- from google.cloud import language from google.cloud.language import enums from google.cloud.language import types import six import sys def entity_sentiment_text(text): """Detects entity sentiment in the provided text.""" client = language.LanguageServiceClient() if isinstance(text, six.binary_type): text = text.decode('utf-8') document = types.Document( content=text.encode('utf-8'), type=enums.Document.Type.PLAIN_TEXT) encoding = enums.EncodingType.UTF32 if sys.maxunicode == 65535: encoding = enums.EncodingType.UTF16 result = client.analyze_entity_sentiment(document, encoding) for entity in result.entities: print('Mentions: ') print(u'Name: "{}"'.format(entity.name)) for mention in entity.mentions: print(u' Begin Offset : {}'.format(mention.text.begin_offset)) print(u' Content : {}'.format(mention.text.content)) print(u' Magnitude : {}'.format(mention.sentiment.magnitude)) print(u' Sentiment : {}'.format(mention.sentiment.score)) print(u' Type : {}'.format(mention.type)) print(u'Salience: {}'.format(entity.salience)) print(u'Sentiment: {}\n'.format(entity.sentiment)) def main(): text = 'アマゾンのAIスピーカー「エコー(アレクサ)」の発売以来、急速に人気が高まってきたスマート・デバイスの音声操作機能。だが、最近そこに思わぬセキュリティ・ホールが発見された。私たち人間には聞き取れないが、機械にだけは聞き取れるサブリミナル・メ ッセージを音声や音楽などに忍ばせることで、スマホやAIスピーカーを外部の第三者が自由自在に操れるというのだ。このショッキングな研究成果を発表したのは、米カリフォルニア大学バークレイ校の科学者チーム。彼らは録音された音声メッセージや音楽に巧妙な命令を忍ば せ、これをユーチューブなどから流すことで、AIスピーカーのようなスマート・デバイスを秘かに操作することに成功した。これにより本来の利用者がスマート・デバイスの電源を入れた状態で音楽を聴いたり、動画を見たりしている間に、(自分のアカウントを通じて)悪意を 持った第三者から勝手にオンライン・ショッピングをされたり、自分のお金をどこかに送金されたり、甚だしい場合にはドアのロックを外されて部屋に侵入されたりする恐れが出てきたという。' entity_sentiment_text(text) main()
実行結果
日本語(ja)は未サポートAPIのよう。
Traceback (most recent call last): File "/usr/local/lib/python3.5/dist-packages/google/api_core/grpc_helpers.py", line 54, in error_remapped_callable return callable_(*args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/grpc/_channel.py", line 500, in __call__ return _end_unary_response_blocking(state, call, False, None) File "/usr/local/lib/python3.5/dist-packages/grpc/_channel.py", line 434, in _end_unary_response_blocking raise _Rendezvous(state, None, None, deadline) grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.INVALID_ARGUMENT, The language ja is not supported for entity_sentiment analysis.)> The above exception was the direct cause of the following exception: Traceback (most recent call last): File "./analyze_entitysentiment.py", line 46, in <module> main() File "./analyze_entitysentiment.py", line 43, in main entity_sentiment_text(text) File "./analyze_entitysentiment.py", line 25, in entity_sentiment_text result = client.analyze_entity_sentiment(document, encoding) File "/usr/local/lib/python3.5/dist-packages/google/cloud/language_v1/gapic/language_service_client.py", line 271, in analyze_entity_sentiment request, retry=retry, timeout=timeout) File "/usr/local/lib/python3.5/dist-packages/google/api_core/gapic_v1/method.py", line 139, in __call__ return wrapped_func(*args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/google/api_core/retry.py", line 260, in retry_wrapped_func on_error=on_error, File "/usr/local/lib/python3.5/dist-packages/google/api_core/retry.py", line 177, in retry_target return target() File "/usr/local/lib/python3.5/dist-packages/google/api_core/timeout.py", line 206, in func_with_timeout return func(*args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/google/api_core/grpc_helpers.py", line 56, in error_remapped_callable six.raise_from(exceptions.from_grpc_error(exc), exc) File "<string>", line 3, in raise_from google.api_core.exceptions.InvalidArgument: 400 The language ja is not supported for entity_sentiment analysis.