質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

2回答

1289閲覧

営業メールをAI(API)を使って判定したい

Eskee

総合スコア268

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2022/02/04 08:31

前提と与件

クライアントから「ホームページのお問い合わせに来る営業メールをなんとかして欲しい。弾く方法はないのか?」という相談を受けました。

サイトのお問い合わせフォームはPHPで作成されており、単純にHTMLのフォームから入力された内容を、PHP Mailで指定したアドレスに送信しています。単純で、一般的にある構成かと思います。

現行フロー

フロント:入力→フロントエンドバリデーション

バックエンド:確認画面表示とバックエンドバリデーション/メール送信(企業管理者向け通知メール・入力者向け確認メール)


クライアントの課題に対しては、以下の内容で対応することが可能かと考えました。

改善フロー

フロント:入力→フロントエンドバリデーション

バックエンド:確認画面表示とバックエンドバリデーション

バックエンド:何らかのAIサービスのAPIに対し、入力された本文を投げる

バックエンド:APIのレスポンスを元に、営業メールとしてTRUEであれば管理者向けのメールは通知しない AND 入力者向けのメールに「営業メールとして判断しましたので、お問い合わせ内容は破棄されました。ご了承ください」という内容の文面を記入、送信する。

バックエンド:営業メールとしてFALSEであれば、現行フローと同じ処理をする。


このような処理をしたいと考えています。

質問内容

こういったフローに組み込むことが可能な、APIを持ったAIサービスをご存知ないでしょうか? SaaSを考えていましたが、PHPやJS等のライブラリでも結構です。(探したけど、適当なものは見つかりませんでしたが…)

また、日本語で文面を解析したいですが、どうしても日本語が無理な場合は、DeepLのAPIなどを挟む処理も考えています。


以上、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こういったフローに組み込むことが可能な、APIを持ったAIサービスをご存知ないでしょうか? SaaSを考えていましたが、PHPやJS等のライブラリでも結構です。(探したけど、適当なものは見つかりませんでしたが…)

っぽそうな会社を発見しました。
https://www.mediawars.ne.jp/hosting/sqrgw/

正規化されていない自然言語ですので、条件式を作るのは事実上不可能

そのための技術が、以下に書くベイズになります。

以下SaaS「ではない」話です。すっ飛ばしてもらって構いません。

また、日本語で文面を解析したいですが、どうしても日本語が無理な場合は、DeepLのAPIなどを挟む処理も考えています。

やることは、

  1. 日本語を品詞や単語毎にぶった切る(形態素解析)
  2. それぞれの語の出現頻度を集計する(ベクトル化する)
  3. 「この出現頻度はスパムかな?違うかな?の判定」をする(ベイズ)

です。

Pythonでの例を詳しくまとめておられる方がいました。このサイトのまとめにあるように、ライブラリが充実しているPythonを使うのであれば、恐らく思っておられるほど難しくありません。わざわざ外部のサービスを使わずPythonで片付けるメリットはスパム判定する基準を調整できる点です。どこかにサーバは置かないといけませんが…。

※1 便利なライブラリを使わずに(≒PythonやRを使わずに)自力で実装しようすると絶望的にめんどくさいと思います。
※2 深層学習(BERTやLSTM)を使えば精度はベイズより格段に上がるとは思いますが、GPUをぶん回す都合上消費電力も跳ね上がります。外部の高火力なサービスを使うのであれば契約料金も跳ね上がるはずです。

投稿2022/02/04 23:44

編集2022/02/04 23:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Eskee

2022/02/05 03:53

有益な情報ありがとうございます! そうなんですね、ベイズ推定、っていうんですね! このキーワードを知れただけでも大変助かります! Pythonが有利とのことでしたが、一応Node.jsにもベイズのライブラリはあるようでした。未確認ですが、ブラウザでも動作するとの情報もあり、もし可能であれば、営業メールのテンプレをフォームに貼り付けられた時点で、送信ボタンをdisableにしちゃう、みたいなこともできそうですね。 自分はNode.js > PHPの順にバックエンドが得意なので、Node.jsでまずはなんとかできないか検討し、無理そうならPythonでそういうAPIを作ってみようかと思います。(PHPでのベイズ推定は、なんだかんだ難しそうでした…) Pythonが一番ライブラリ整ってて楽なんでしょうけど、Pythonの言語学習コストが多少かかるので、一番後回しになりそうです… 他の方のご意見も聞いてみたいので、解決済みはもう少し後にしようと思います。 有益な情報ありがとうございました!
Eskee

2022/02/05 06:06 編集

取り急ぎ、npmにあったclassificatorというライブラリで、 1000〜2000字程度の営業メール4件と、 1000字程度の非営業メール(ただし、ビジネス用途のメール)4件を学習させ、 その後、全く別の営業メールと非営業メールをカテゴライズさせました。 かなりの精度でマッチしており、驚いております。 https://npm.io/package/classificator もう少し学習データのサンプルや、カテゴライズ用のサンプルを試す必要がありますので、 知人等に協力を仰ぎ、営業メールの文面を集めてみて実験したいと思います。
退会済みユーザー

退会済みユーザー

2022/02/05 08:38

> 全く別の営業メールと非営業メールをカテゴライズさせました。 > かなりの精度でマッチしており、驚いております。 イイ感じですね! 学習対象が増えれば増えるほど精度は(ある程度で頭打ちにはなると思いますが)上がっていきますので、ぜひこのまま実験を続けてください。
guest

0

一旦gmailに飛ばしてフィルタして別のメアドでうけるとか・・・

投稿2022/02/04 08:57

yambejp

総合スコア117732

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Eskee

2022/02/04 09:02

Gmailのフィルタというと、自分で条件式を設定する、いわゆるフィルタ機能のことなのか、 それとも、自動的にスパム判定し、受信トレイ飛ばして迷惑メールフォルダに入れるあの機能の、どちらでしょうか? 前者であれば、正規化されていない自然言語ですので、条件式を作るのは事実上不可能かと思いました。 後者であれば、そもそも精度に問題があります。 本件とは別で、サイトからのお問い合わせをGmailで受信しております(私自身のサイト)が、2:8ぐらいの割合で、迷惑メールフォルダには分類されないようです。(2の方が迷惑メール判定) なので、その仕組みとしては、今回の与件を解決するのは難しいかな、という印象です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問