サイバーコップスとの接続方法は2種類あり、通信プロトコルHTTP(HTTPS)と、サイバーコップス独自のプロトコル(通称・COPSプロトコル)を利用したものがあります。(どちらを利用するかはお客様のご希望によります)
インターネットを経由してサイバーコップスのシステムに接続し、検閲させたいテキストデータ(投稿文章)を送信します。
システムは送信されたテキストデータを形態素解析して単語ごとに区切り、内部で管理しているフィルターワード集とのマッチング処理をして、マッチした単語ごとにレベル付けを行います(判定処理)
そして、判定結果をXML形式のテキストデータとして御社サーバーに返信致します。
インターネットを経由してサイバーコップスのシステムに接続し、検閲させたいテキストデータ(投稿文章)を送信します。
システムは送信されたテキストデータを形態素解析して単語ごとに区切り、内部で管理しているフィルターワード集とのマッチング処理をして、マッチした単語ごとにレベル付けを行います(判定処理)
そして、判定結果をXML形式のテキストデータとして御社サーバーに返信致します。
サイバーコップスをご利用するにあたり、お客様側アプリケーションでは判定結果に応じて処理を振り分けるといった部分を開発・設定を行っていただく必要がありますが、簡単に設定を可能にする為に、弊社にて各種サンプルプログラムを用意しています。
こちらからサイバーコップスとの接続方法について記した「サイバーコップスAPI仕様書」をダウンロードいただけます。
サイバーコップスAPI仕様書(pdfファイル)
サイバーコップスAPI仕様書(pdfファイル)
また、以下からプログラム言語別にサイバーコップス用ライブラリとサンプルプログラムを掲載いたしますので、ご参照ください。
Perl版サイバーコップス用ライブラリ(zipファイル)動作確認:Perl 5.8.5
#!/usr/bin/perl
use strict;
use warnings;
use CyberCops;
# 投稿内容と仮定する
my $text = "エロおやじ、キモい。";
# CyberCopsとの接続情報をセット
my $srv = CyberCops::Connection->new("example.com",
${CyberCops::Connection::HTTP_PORT});
# CyberCops利用者情報をセット
my $clt = CyberCops::Client->new(("userid" => "userid",
"passwd" => "passwd",
"ipaddr" => "127.0.0.1",
"charset" => "UTF-8",
"option" => "Option String"));
eval {
# CyberCopsとの通信(投稿内容の判定)
my $result = $clt->communicate($srv, $text);
# 判定結果としてエラーが通知されたか?
unless ($result->error) {
# レベル9と判定されたワードを取得
my @ngwords = $result->level9();
if (my $len = @ngwords > 0) {
# 投稿ユーザに注意文言を表示
print "不適切な言葉 「";
print join("」「", @ngwords);
print "」が含まれています。\n";
}
else {
# 投稿内容を反映する処理
# ...
#print "No problem.\n";
}
}
else {
# エラーが通知された場合の処理
# ...
# エラーコード, エラーメッセージの取得
#print $result->error, "\n";
#print $result->errormsg, "\n";
}
};
if ($@ =~ /^CyberCops/) {
# 処理中に例外が発生した場合の処理
# ...
# エラーメッセージの取得
#print "Exception: ", $@, "\n";
}
use strict;
use warnings;
use CyberCops;
# 投稿内容と仮定する
my $text = "エロおやじ、キモい。";
# CyberCopsとの接続情報をセット
my $srv = CyberCops::Connection->new("example.com",
${CyberCops::Connection::HTTP_PORT});
# CyberCops利用者情報をセット
my $clt = CyberCops::Client->new(("userid" => "userid",
"passwd" => "passwd",
"ipaddr" => "127.0.0.1",
"charset" => "UTF-8",
"option" => "Option String"));
eval {
# CyberCopsとの通信(投稿内容の判定)
my $result = $clt->communicate($srv, $text);
# 判定結果としてエラーが通知されたか?
unless ($result->error) {
# レベル9と判定されたワードを取得
my @ngwords = $result->level9();
if (my $len = @ngwords > 0) {
# 投稿ユーザに注意文言を表示
print "不適切な言葉 「";
print join("」「", @ngwords);
print "」が含まれています。\n";
}
else {
# 投稿内容を反映する処理
# ...
#print "No problem.\n";
}
}
else {
# エラーが通知された場合の処理
# ...
# エラーコード, エラーメッセージの取得
#print $result->error, "\n";
#print $result->errormsg, "\n";
}
};
if ($@ =~ /^CyberCops/) {
# 処理中に例外が発生した場合の処理
# ...
# エラーメッセージの取得
#print "Exception: ", $@, "\n";
}
PHP版サイバーコップス用ライブラリ(zipファイル)動作確認:PHP 4.3.9
PHP5版サイバーコップス用ライブラリ(zipファイル)動作確認:PHP 5.1.6
<?php
require_once "cybercops.php";
// 投稿内容と仮定する
$text = "エロおやじ、キモい。";
// CyberCopsサーバとの接続情報をセット
// * 接続するCyberCopsサーバのホスト名、ポートを指定する。
$srv = new CyberCops_Connection("example.com",
CYBERCOPS_HTTP_PORT);
// CyberCops利用者情報をセット
$cli = new CyberCops_Client(array('userid' => 'userid',
'passwd' => 'passwd',
'ipaddr' => '127.0.0.1',
'charset'=> 'UTF-8',
'option' => 'Option String'));
// CyberCopsサーバと通信(判定要求&結果取得)
$res = $cli->communicate($srv, $text);
// 判定処理にエラーは発生したか?
if (!$res->isError()) {
// レベル9と判定されたワードを取得
$ngwords = $res->getLevel9();
// NGワードの有無を確認
if (!empty($ngwords)) {
// 投稿ユーザに注意文言を表示
echo "不適切な言葉 「";
echo join("」「", $ngwords);
echo "」が含まれています。\n";
}
else {
// 投稿内容を反映する処理
// ...
//echo "Level5 or Level7 or No problem";
}
}
else {
// 判定処理でエラーが発生した場合の処理
// ...
// エラー番号,エラーメッセージを取得
//$errno = $res->errno();
//$errmsg = $res->errmsg();
}
?>
require_once "cybercops.php";
// 投稿内容と仮定する
$text = "エロおやじ、キモい。";
// CyberCopsサーバとの接続情報をセット
// * 接続するCyberCopsサーバのホスト名、ポートを指定する。
$srv = new CyberCops_Connection("example.com",
CYBERCOPS_HTTP_PORT);
// CyberCops利用者情報をセット
$cli = new CyberCops_Client(array('userid' => 'userid',
'passwd' => 'passwd',
'ipaddr' => '127.0.0.1',
'charset'=> 'UTF-8',
'option' => 'Option String'));
// CyberCopsサーバと通信(判定要求&結果取得)
$res = $cli->communicate($srv, $text);
// 判定処理にエラーは発生したか?
if (!$res->isError()) {
// レベル9と判定されたワードを取得
$ngwords = $res->getLevel9();
// NGワードの有無を確認
if (!empty($ngwords)) {
// 投稿ユーザに注意文言を表示
echo "不適切な言葉 「";
echo join("」「", $ngwords);
echo "」が含まれています。\n";
}
else {
// 投稿内容を反映する処理
// ...
//echo "Level5 or Level7 or No problem";
}
}
else {
// 判定処理でエラーが発生した場合の処理
// ...
// エラー番号,エラーメッセージを取得
//$errno = $res->errno();
//$errmsg = $res->errmsg();
}
?>
Python版サイバーコップス用ライブラリ(zipファイル)動作確認:Python 2.3.4
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import CyberCops
# 投稿内容と仮定する
text = "エロおやじ、キモい。"
# CyberCopsとの接続情報をセット
srv = CyberCops.Connection("example.com", CyberCops.Connection.HTTP_PORT)
# CyberCops利用者情報をセット
cli = CyberCops.Client({'userid' : "userid",
'passwd' : "passwd",
'ipaddr' : "127.0.0.1",
'charset': "UTF-8",
'option' : "Option String"})
try:
# CyberCopsサーバと通信(判定要求&結果取得)
res = cli.communicate(srv, text)
# 判定結果としてエラーが通知されたか?
if not res.is_error():
# レベル9と判定されたワードを取得
ngwords = res.level9()
# NGワードの有無を確認
if len( ngwords ) > 0:
# 投稿ユーザに注意文言を表示
print "不適切な言葉「%s」が含まれています。" % "」「".join( ngwords )
else:
# 投稿内容を反映する処理
#print "No problem."
pass
else:
# エラーが通知された場合の処理
# ...
# エラーコード, エラーメッセージの取得
#print res.error
#print res.errormsg
pass
except CyberCops.Error, e:
# 処理中に例外が発生した場合の処理
# ...
# エラーメッセージの取得
#print "Exception: %s" % e.value
pass
# -*- coding: utf-8 -*-
import CyberCops
# 投稿内容と仮定する
text = "エロおやじ、キモい。"
# CyberCopsとの接続情報をセット
srv = CyberCops.Connection("example.com", CyberCops.Connection.HTTP_PORT)
# CyberCops利用者情報をセット
cli = CyberCops.Client({'userid' : "userid",
'passwd' : "passwd",
'ipaddr' : "127.0.0.1",
'charset': "UTF-8",
'option' : "Option String"})
try:
# CyberCopsサーバと通信(判定要求&結果取得)
res = cli.communicate(srv, text)
# 判定結果としてエラーが通知されたか?
if not res.is_error():
# レベル9と判定されたワードを取得
ngwords = res.level9()
# NGワードの有無を確認
if len( ngwords ) > 0:
# 投稿ユーザに注意文言を表示
print "不適切な言葉「%s」が含まれています。" % "」「".join( ngwords )
else:
# 投稿内容を反映する処理
#print "No problem."
pass
else:
# エラーが通知された場合の処理
# ...
# エラーコード, エラーメッセージの取得
#print res.error
#print res.errormsg
pass
except CyberCops.Error, e:
# 処理中に例外が発生した場合の処理
# ...
# エラーメッセージの取得
#print "Exception: %s" % e.value
pass
Ruby版サイバーコップス用ライブラリ(zipファイル)動作確認:Ruby 1.8.5
#!/usr/bin/env ruby
require "cybercops"
# 投稿内容と仮定する
text = "エロおやじ、キモい。"
# CyberCopsとの接続情報をセット
srv = CyberCops::Connection.new("example.com",
CyberCops::Connection::HTTP_PORT)
# CyberCops利用者情報をセット
cli = CyberCops::Client.new({:userid => "userid",
:passwd => "passwd",
:ipaddr => "127.0.0.1",
:charset => "UTF-8",
:option => "Option String"})
begin
# CyberCopsとの通信(投稿内容の判定)
res = cli.communicate(srv, text)
# 判定結果としてエラーが通知されたか?
unless res.error?
# レベル9と判定されたワードを取得
ngwords = res.level9
unless ngwords.empty?
# 投稿ユーザに注意文言を表示
print "不適切な言葉「"
print ngwords.join("」「")
print "」が含まれています。\n"
else
# 投稿内容を反映する処理
# ...
end
else
# エラーが通知された場合の処理
# ...
# エラーコード, エラーメッセージの取得
#puts res.error
#puts res.errormsg
end
rescue CyberCops::Error => e
# 処理中に例外が発生した場合の処理
# ...
#エラーメッセージの取得
#errmsg = e.message
end
require "cybercops"
# 投稿内容と仮定する
text = "エロおやじ、キモい。"
# CyberCopsとの接続情報をセット
srv = CyberCops::Connection.new("example.com",
CyberCops::Connection::HTTP_PORT)
# CyberCops利用者情報をセット
cli = CyberCops::Client.new({:userid => "userid",
:passwd => "passwd",
:ipaddr => "127.0.0.1",
:charset => "UTF-8",
:option => "Option String"})
begin
# CyberCopsとの通信(投稿内容の判定)
res = cli.communicate(srv, text)
# 判定結果としてエラーが通知されたか?
unless res.error?
# レベル9と判定されたワードを取得
ngwords = res.level9
unless ngwords.empty?
# 投稿ユーザに注意文言を表示
print "不適切な言葉「"
print ngwords.join("」「")
print "」が含まれています。\n"
else
# 投稿内容を反映する処理
# ...
end
else
# エラーが通知された場合の処理
# ...
# エラーコード, エラーメッセージの取得
#puts res.error
#puts res.errormsg
end
rescue CyberCops::Error => e
# 処理中に例外が発生した場合の処理
# ...
#エラーメッセージの取得
#errmsg = e.message
end