পাইথনের সাথে প্রাকৃতিক ভাষা API ব্যবহার করা

১. সংক্ষিপ্ত বিবরণ

2c061ec3bc00df22.png

ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই আপনাকে গুগল মেশিন লার্নিং ব্যবহার করে অসংগঠিত টেক্সট থেকে তথ্য বের করতে সাহায্য করে। এই টিউটোরিয়ালে, আপনি এর পাইথন ক্লায়েন্ট লাইব্রেরি ব্যবহারের উপর মনোযোগ দেবেন।

আপনি যা শিখবেন

  • আপনার পরিবেশ কীভাবে সেট আপ করবেন
  • কীভাবে সেন্টিমেন্ট অ্যানালাইসিস করতে হয়
  • সত্তা বিশ্লেষণ কীভাবে সম্পাদন করবেন
  • সিনট্যাক্স বিশ্লেষণ কীভাবে সম্পাদন করবেন
  • বিষয়বস্তু শ্রেণিবিন্যাস কীভাবে সম্পাদন করবেন
  • কীভাবে টেক্সট মডারেশন করবেন

আপনার যা যা লাগবে

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

পাইথন নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। d1264ca30785e435.png .

cb81e7c8e34bc8d.png

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

d95252b003979716.png

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

7833d5e1c5d18f54.png

এই ভার্চুয়াল মেশিনটিতে প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই একটি ব্রাউজার দিয়ে করা সম্ভব।

ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

৩. পরিবেশ সেটআপ

ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই ব্যবহার শুরু করার আগে, এপিআইটি সক্রিয় করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

gcloud services enable language.googleapis.com

আপনার এইরকম কিছু দেখা উচিত:

Operation "operations/..." finished successfully.

এখন, আপনি ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই ব্যবহার করতে পারবেন!

আপনার হোম ডিরেক্টরিতে যান:

cd ~

নির্ভরতাগুলিকে বিচ্ছিন্ন করতে একটি পাইথন ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন:

virtualenv venv-language

ভার্চুয়াল পরিবেশ সক্রিয় করুন:

source venv-language/bin/activate

IPython, Pandas, এবং Natural Language API ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন:

pip install ipython pandas tabulate google-cloud-language

আপনার এইরকম কিছু দেখা উচিত:

...
Installing collected packages: ... pandas ... ipython ... google-cloud-language
Successfully installed ... google-cloud-language-2.11.0 ...

এখন, আপনি ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই ক্লায়েন্ট লাইব্রেরিটি ব্যবহার করার জন্য প্রস্তুত!

পরবর্তী ধাপগুলোতে, আপনি IPython নামক একটি ইন্টারেক্টিভ পাইথন ইন্টারপ্রেটার ব্যবহার করবেন, যা আপনি আগের ধাপে ইনস্টল করেছিলেন। ক্লাউড শেলে ipython রান করে একটি সেশন শুরু করুন:

ipython

আপনার এইরকম কিছু দেখা উচিত:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.15.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

৪. অনুভূতি বিশ্লেষণ

সেন্টিমেন্ট অ্যানালাইসিস প্রদত্ত টেক্সট পরীক্ষা করে তার মধ্যে প্রচলিত আবেগগত মতামত শনাক্ত করে, বিশেষত বাক্য এবং ডকুমেন্ট উভয় স্তরেই প্রকাশিত অনুভূতি ইতিবাচক, নেতিবাচক বা নিরপেক্ষ কিনা তা নির্ধারণ করে। এটি analyze_sentiment মেথডের মাধ্যমে সম্পন্ন করা হয়, যা একটি AnalyzeSentimentResponse রিটার্ন করে।

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

from google.cloud import language

def analyze_text_sentiment(text: str) -> language.AnalyzeSentimentResponse:
    client = language.LanguageServiceClient()
    document = language.Document(
        content=text,
        type_=language.Document.Type.PLAIN_TEXT,
    )
    return client.analyze_sentiment(document=document)

def show_text_sentiment(response: language.AnalyzeSentimentResponse):
    import pandas as pd

    columns = ["score", "sentence"]
    data = [(s.sentiment.score, s.text.content) for s in response.sentences]
    df_sentence = pd.DataFrame(columns=columns, data=data)

    sentiment = response.document_sentiment
    columns = ["score", "magnitude", "language"]
    data = [(sentiment.score, sentiment.magnitude, response.language)]
    df_document = pd.DataFrame(columns=columns, data=data)

    format_args = dict(index=False, tablefmt="presto", floatfmt="+.1f")
    print(f"At sentence level:\n{df_sentence.to_markdown(**format_args)}")
    print()
    print(f"At document level:\n{df_document.to_markdown(**format_args)}")
    

একটি বিশ্লেষণ সম্পাদন করুন:

# Input
text = """
Python is a very readable language, which makes it easy to understand and maintain code.
It's simple, very flexible, easy to learn, and suitable for a wide variety of tasks.
One disadvantage is its speed: it's not as fast as some other programming languages.
"""

# Send a request to the API
analyze_sentiment_response = analyze_text_sentiment(text)

# Show the results
show_text_sentiment(analyze_sentiment_response)

আপনি নিম্নলিখিতের মতো একটি আউটপুট দেখতে পাবেন:

At sentence level:
   score | sentence
---------+------------------------------------------------------------------------------------------
    +0.8 | Python is a very readable language, which makes it easy to understand and maintain code.
    +0.9 | It's simple, very flexible, easy to learn, and suitable for a wide variety of tasks.
    -0.4 | One disadvantage is its speed: it's not as fast as some other programming languages.

At document level:
   score |   magnitude | language
---------+-------------+------------
    +0.4 |        +2.2 | en

এক মুহূর্ত সময় নিয়ে নিজের বাক্যগুলো যাচাই করে দেখুন।

সারসংক্ষেপ

এই ধাপে, আপনি একটি টেক্সট স্ট্রিং-এর উপর সেন্টিমেন্ট অ্যানালাইসিস করতে সক্ষম হয়েছেন!

৫. সত্তা বিশ্লেষণ

এনটিটি অ্যানালাইসিস প্রদত্ত টেক্সট থেকে পরিচিত এনটিটি (যেমন প্রপার নাউন, যেমন পাবলিক ফিগার, ল্যান্ডমার্ক ইত্যাদি) খুঁজে বের করে এবং সেই এনটিটিগুলো সম্পর্কে তথ্য ফেরত দেয়। এটি analyze_entities মেথডের মাধ্যমে সম্পন্ন করা হয়, যা একটি AnalyzeEntitiesResponse রিটার্ন করে।

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

from google.cloud import language

def analyze_text_entities(text: str) -> language.AnalyzeEntitiesResponse:
    client = language.LanguageServiceClient()
    document = language.Document(
        content=text,
        type_=language.Document.Type.PLAIN_TEXT,
    )
    return client.analyze_entities(document=document)

def show_text_entities(response: language.AnalyzeEntitiesResponse):
    import pandas as pd

    columns = ("name", "type", "salience", "mid", "wikipedia_url")
    data = (
        (
            entity.name,
            entity.type_.name,
            entity.salience,
            entity.metadata.get("mid", ""),
            entity.metadata.get("wikipedia_url", ""),
        )
        for entity in response.entities
    )
    df = pd.DataFrame(columns=columns, data=data)
    print(df.to_markdown(index=False, tablefmt="presto", floatfmt=".0%"))
    

একটি বিশ্লেষণ সম্পাদন করুন:

# Input
text = """Guido van Rossum is best known as the creator of Python,
which he named after the Monty Python comedy troupe.
He was born in Haarlem, Netherlands.
"""

# Send a request to the API
analyze_entities_response = analyze_text_entities(text)

# Show the results
show_text_entities(analyze_entities_response)

আপনি নিম্নলিখিতের মতো একটি আউটপুট দেখতে পাবেন:

 name             | type         |   salience | mid       | wikipedia_url
------------------+--------------+------------+-----------+-------------------------------------------------------------
 Guido van Rossum | PERSON       |        50% | /m/01h05c | https://en.wikipedia.org/wiki/Guido_van_Rossum
 Python           | ORGANIZATION |        38% | /m/05z1_  | https://en.wikipedia.org/wiki/Python_(programming_language)
 creator          | PERSON       |         5% |           |
 Monty Python     | PERSON       |         3% | /m/04sd0  | https://en.wikipedia.org/wiki/Monty_Python
 comedy troupe    | PERSON       |         2% |           |
 Haarlem          | LOCATION     |         1% | /m/0h095  | https://en.wikipedia.org/wiki/Haarlem
 Netherlands      | LOCATION     |         1% | /m/059j2  | https://en.wikipedia.org/wiki/Netherlands

অন্যান্য সত্তার উল্লেখ করে আপনার নিজের বাক্যগুলো যাচাই করতে একটু সময় নিন।

সারসংক্ষেপ

এই ধাপে, আপনি সত্তা বিশ্লেষণ করতে সক্ষম হয়েছেন!

৬. বাক্য গঠন বিশ্লেষণ

সিনট্যাক্স বিশ্লেষণ ভাষাগত তথ্য আহরণ করে, প্রদত্ত টেক্সটকে একাধিক বাক্য ও টোকেনে (সাধারণত শব্দের সীমানার উপর ভিত্তি করে) বিভক্ত করে এবং সেই টোকেনগুলোর উপর আরও বিশ্লেষণ প্রদান করে। এটি analyze_syntax মেথডের মাধ্যমে সম্পন্ন করা হয়, যা একটি AnalyzeSyntaxResponse রিটার্ন করে।

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

from typing import Optional
from google.cloud import language

def analyze_text_syntax(text: str) -> language.AnalyzeSyntaxResponse:
    client = language.LanguageServiceClient()
    document = language.Document(
        content=text,
        type_=language.Document.Type.PLAIN_TEXT,
    )
    return client.analyze_syntax(document=document)

def get_token_info(token: Optional[language.Token]) -> list[str]:
    parts = [
        "tag",
        "aspect",
        "case",
        "form",
        "gender",
        "mood",
        "number",
        "person",
        "proper",
        "reciprocity",
        "tense",
        "voice",
    ]
    if not token:
        return ["token", "lemma"] + parts

    text = token.text.content
    lemma = token.lemma if token.lemma != token.text.content else ""
    info = [text, lemma]
    for part in parts:
        pos = token.part_of_speech
        info.append(getattr(pos, part).name if part in pos else "")

    return info

def show_text_syntax(response: language.AnalyzeSyntaxResponse):
    import pandas as pd

    tokens = len(response.tokens)
    sentences = len(response.sentences)
    columns = get_token_info(None)
    data = (get_token_info(token) for token in response.tokens)
    df = pd.DataFrame(columns=columns, data=data)
    # Remove empty columns
    empty_columns = [col for col in df if df[col].eq("").all()]
    df.drop(empty_columns, axis=1, inplace=True)

    print(f"Analyzed {tokens} token(s) from {sentences} sentence(s):")
    print(df.to_markdown(index=False, tablefmt="presto"))
    

একটি বিশ্লেষণ সম্পাদন করুন:

# Input
text = """Guido van Rossum is best known as the creator of Python.
He was born in Haarlem, Netherlands.
"""

# Send a request to the API
analyze_syntax_response = analyze_text_syntax(text)

# Show the results
show_text_syntax(analyze_syntax_response)

আপনি নিম্নলিখিতের মতো একটি আউটপুট দেখতে পাবেন:

Analyzed 20 token(s) from 2 sentence(s):
 token       | lemma   | tag   | case       | gender    | mood       | number   | person   | proper   | tense   | voice
-------------+---------+-------+------------+-----------+------------+----------+----------+----------+---------+---------
 Guido       |         | NOUN  |            |           |            | SINGULAR |          | PROPER   |         |
 van         |         | NOUN  |            |           |            | SINGULAR |          | PROPER   |         |
 Rossum      |         | NOUN  |            |           |            | SINGULAR |          | PROPER   |         |
 is          | be      | VERB  |            |           | INDICATIVE | SINGULAR | THIRD    |          | PRESENT |
 best        | well    | ADV   |            |           |            |          |          |          |         |
 known       | know    | VERB  |            |           |            |          |          |          | PAST    |
 as          |         | ADP   |            |           |            |          |          |          |         |
 the         |         | DET   |            |           |            |          |          |          |         |
 creator     |         | NOUN  |            |           |            | SINGULAR |          |          |         |
 of          |         | ADP   |            |           |            |          |          |          |         |
 Python      |         | NOUN  |            |           |            | SINGULAR |          | PROPER   |         |
 .           |         | PUNCT |            |           |            |          |          |          |         |
 He          |         | PRON  | NOMINATIVE | MASCULINE |            | SINGULAR | THIRD    |          |         |
 was         | be      | VERB  |            |           | INDICATIVE | SINGULAR | THIRD    |          | PAST    |
 born        | bear    | VERB  |            |           |            |          |          |          | PAST    | PASSIVE
 in          |         | ADP   |            |           |            |          |          |          |         |
 Haarlem     |         | NOUN  |            |           |            | SINGULAR |          | PROPER   |         |
 ,           |         | PUNCT |            |           |            |          |          |          |         |
 Netherlands |         | NOUN  |            |           |            | SINGULAR |          | PROPER   |         |
 .           |         | PUNCT |            |           |            |          |          |          |         |

একটু সময় নিয়ে অন্যান্য গঠনশৈলী ব্যবহার করে আপনার নিজের বাক্যগুলো যাচাই করে দেখুন।

আপনি যদি রেসপন্স ইনসাইটস-এর গভীরে যান, তাহলে টোকেনগুলোর মধ্যকার সম্পর্কও খুঁজে পাবেন। এই উদাহরণটির সম্পূর্ণ সিনট্যাক্স বিশ্লেষণ দেখানোর জন্য এখানে একটি ভিজ্যুয়াল ব্যাখ্যা দেওয়া হলো, যা অনলাইন ন্যাচারাল ল্যাঙ্গুয়েজ ডেমো থেকে নেওয়া একটি স্ক্রিনশট:

b819e0aa7dbf1b9d.png

সারসংক্ষেপ

এই ধাপে, আপনি সিনট্যাক্স বিশ্লেষণ করতে সক্ষম হয়েছেন!

৭. বিষয়বস্তুর শ্রেণিবিন্যাস

কন্টেন্ট ক্লাসিফিকেশন একটি ডকুমেন্ট বিশ্লেষণ করে এবং ডকুমেন্টটিতে থাকা টেক্সটের জন্য প্রযোজ্য কন্টেন্ট ক্যাটাগরিগুলোর একটি তালিকা ফেরত দেয়। এটি classify_text মেথডের মাধ্যমে করা হয়, যা একটি ClassifyTextResponse রিটার্ন করে।

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

from google.cloud import language

def classify_text(text: str) -> language.ClassifyTextResponse:
    client = language.LanguageServiceClient()
    document = language.Document(
        content=text,
        type_=language.Document.Type.PLAIN_TEXT,
    )
    return client.classify_text(document=document)

def show_text_classification(text: str, response: language.ClassifyTextResponse):
    import pandas as pd

    columns = ["category", "confidence"]
    data = ((category.name, category.confidence) for category in response.categories)
    df = pd.DataFrame(columns=columns, data=data)

    print(f"Text analyzed:\n{text}")
    print(df.to_markdown(index=False, tablefmt="presto", floatfmt=".0%"))
    

একটি বিশ্লেষণ সম্পাদন করুন:

# Input
text = """Python is an interpreted, high-level, general-purpose programming language.
Created by Guido van Rossum and first released in 1991, Python's design philosophy
emphasizes code readability with its notable use of significant whitespace.
"""

# Send a request to the API
classify_text_response = classify_text(text)

# Show the results
show_text_classification(text, classify_text_response)

আপনি নিম্নলিখিতের মতো একটি আউটপুট দেখতে পাবেন:

Text analyzed:
Python is an interpreted, high-level, general-purpose programming language.
Created by Guido van Rossum and first released in 1991, Python's design philosophy
emphasizes code readability with its notable use of significant whitespace.

 category                             |   confidence
--------------------------------------+--------------
 /Computers & Electronics/Programming |          99%
 /Science/Computer Science            |          99%

অন্যান্য বিভাগ সম্পর্কিত আপনার নিজের বাক্যগুলো যাচাই করতে একটু সময় নিন। মনে রাখবেন, আপনাকে অবশ্যই কমপক্ষে বিশটি টোকেন (শব্দ এবং বিরামচিহ্ন) সহ একটি টেক্সট ব্লক (ডকুমেন্ট) সরবরাহ করতে হবে।

সারসংক্ষেপ

এই ধাপে, আপনি বিষয়বস্তু শ্রেণিবিন্যাস করতে সক্ষম হয়েছেন!

৮. টেক্সট মডারেশন

গুগলের সর্বশেষ PaLM 2 ফাউন্ডেশন মডেল দ্বারা চালিত টেক্সট মডারেশন, বিদ্বেষমূলক বক্তব্য, উৎপীড়ন এবং যৌন হয়রানিসহ বিভিন্ন ধরনের ক্ষতিকর বিষয়বস্তু শনাক্ত করে। এটি moderate_text মেথডের মাধ্যমে সম্পন্ন করা হয়, যা একটি ModerateTextResponse রিটার্ন করে।

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

from google.cloud import language

def moderate_text(text: str) -> language.ModerateTextResponse:
    client = language.LanguageServiceClient()
    document = language.Document(
        content=text,
        type_=language.Document.Type.PLAIN_TEXT,
    )
    return client.moderate_text(document=document)

def show_text_moderation(text: str, response: language.ModerateTextResponse):
    import pandas as pd

    def confidence(category: language.ClassificationCategory) -> float:
        return category.confidence

    columns = ["category", "confidence"]
    categories = sorted(response.moderation_categories, key=confidence, reverse=True)
    data = ((category.name, category.confidence) for category in categories)
    df = pd.DataFrame(columns=columns, data=data)

    print(f"Text analyzed:\n{text}")
    print(df.to_markdown(index=False, tablefmt="presto", floatfmt=".0%"))
    

একটি বিশ্লেষণ সম্পাদন করুন:

# Input
text = """I have to read Ulysses by James Joyce.
I'm a little over halfway through and I hate it.
What a pile of garbage!
"""

# Send a request to the API
response = moderate_text(text)

# Show the results
show_text_moderation(text, response)

আপনি নিম্নলিখিতের মতো একটি আউটপুট দেখতে পাবেন:

Text analyzed:
I have to read Ulysses by James Joyce.
I'm a little over halfway through and I hate it.
What a pile of garbage!

 category              |   confidence
-----------------------+--------------
 Toxic                 |          67%
 Insult                |          58%
 Profanity             |          53%
 Violent               |          48%
 Illicit Drugs         |          29%
 Religion & Belief     |          27%
 Politics              |          22%
 Death, Harm & Tragedy |          21%
 Finance               |          18%
 Derogatory            |          14%
 Firearms & Weapons    |          11%
 Health                |          10%
 Legal                 |          10%
 War & Conflict        |           7%
 Public Safety         |           5%
 Sexual                |           4%

এক মুহূর্ত সময় নিয়ে নিজের বাক্যগুলো যাচাই করে দেখুন।

সারসংক্ষেপ

এই ধাপে, আপনি টেক্সট মডারেশন করতে সক্ষম হয়েছেন!

৯. অভিনন্দন!

2c061ec3bc00df22.png

আপনি পাইথন ব্যবহার করে ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই (Natural Language API) ব্যবহার করতে শিখেছেন!

পরিষ্কার করা

আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট পরিষ্কার করতে, ক্লাউড শেল থেকে:

  • আপনি যদি এখনও আপনার IPython সেশনে থাকেন, তাহলে শেল-এ ফিরে যান: exit
  • পাইথন ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার বন্ধ করুন: deactivate
  • আপনার ভার্চুয়াল এনভায়রনমেন্ট ফোল্ডারটি মুছে ফেলুন: cd ~ ; rm -rf ./venv-language

ক্লাউড শেল থেকে আপনার গুগল ক্লাউড প্রজেক্ট ডিলিট করতে:

  • আপনার বর্তমান প্রজেক্ট আইডি পুনরুদ্ধার করুন: PROJECT_ID=$(gcloud config get-value core/project)
  • নিশ্চিত করুন যে এটিই সেই প্রজেক্ট যা আপনি মুছতে চান: echo $PROJECT_ID
  • প্রজেক্টটি মুছে ফেলুন: gcloud projects delete $PROJECT_ID

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।