(57)【要約】【課題】人物のスキル判定を支援するプログラムを提供する。【解決手段】コンピュータに、あるユーザが保持するリポジトリに関するデータを、データベースから取得する機能と、リポジトリに関するデータを、少なくともコード構文解析した結果に基づいて数値化する機能と、リポジトリに関するデータに関連するパラメータを記憶する機能であって、ここで、当該パラメータは、ユーザの他のユーザとの依存関係を示しており、数値と、ユーザのスキルの偏差値との関係を機械学習により学習させる機能と、パラメータに基づいて、学習済みニューラルネットワークの各層間の重み付け係数を更新させる機能と、学習済みニューラルネットワークを利用して、ユーザのスキル偏差値を算出する機能と、を実現させるためのプログラムを提供する。【選択図】図１
2020035077.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
あるユーザが保持するリポジトリに関するデータを、データベースから取得する機能と、
前記リポジトリに関するデータを、少なくともコード構文解析した結果に基づいて数値化する機能と、
前記リポジトリに関するデータに関連するパラメータを記憶する機能であって、ここで、当該パラメータは、前記ユーザの他のユーザとの依存関係を示しており、
前記数値と、前記ユーザのスキルの偏差値との関係を機械学習により学習させる機能と、
前記パラメータに基づいて、前記学習済みニューラルネットワークの各層間の重み付け係数を更新させる機能と、
前記学習済みニューラルネットワークを利用して、前記ユーザのスキル偏差値を算出する機能と、
を実現させるためのプログラム。
【請求項２】
請求項１記載のプログラムにおいて、
前記重み付け係数を更新させる機能は、前記スキル偏差値を算出した時点を基準に、当該時点より過去のパラメータの重み付けを相対的に重くし、当該時点より未来のパラメータの重み付けを相対的に軽くして、前記重み付けを更新させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定用途向けの人物のスキル判定を支援するためのシステムに関するものであり、特に、データソースを適宜評点することを通して、特定用途向けの人物のスキル診断を支援するシステムに関するものである。
【０００２】
特定用途向けの人物のスキルの一例として、プログラミングがある。プログラミングができるかどうかそのものの技術を採点する技術は従来存在しなかったが、例えば、特許文献１に示すようなプログラミングに関する評価を用いてプログラミングに関する技術力を解析し採点する技術は存在していた。プログラミングにおける評価を行なう事でいわゆる技術力の測定を行なうことはできる。
【０００３】
しかしながら、プログラミングなどの人物のスキル判定を行うにあたっては、特許文献１のような技術を使ってスキル診断を行ったとしても、特定の人物のスキル診断の支援ができるとは限らない。スキル診断には判定目的があり、その目的に適した特有の診断方法が存在するからである。また、特許文献１のような技術を使用して判断したようなスキルが、人物（転職の場合は、求職者）にモチベーションを与えるとも限らないからである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１４６１７６
【０００５】
人物のスキル判定を行うにあたっては、その担当者（求人票の場合は、人事担当者）の経験や勘に頼ったものとなっており、人物のスキル判定を行い担当者にアドバイスを提供することで求職者のスキルを明示する仕組みはなかった。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の一態様によると、人物のスキル判定を自動的に行い、自身に対する技術力のフィードバックやスコア化されたデータを提供することで自身の技術力の可視化を明示するシステムを提供することを目的とし、より詳細には、入力された技術情報を、特定用途の観点から複数の視点で評価することで、人物のスキル判定を支援するシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明では、特定の人物のスキル判定の支援システムにおいて、特定スキルの所定の情報のデータを取得する入力手段と、スキル情報の評価ルールに基づいて、スキル情報を解析して、入力された情報で使用されているプログラミング言語、またソーシャルに対する影響力の中から少なくとも一つを抽出して、技術力判定ルールに基づいて、当該抽出されたプログラミング言語、またはソーシャルに対する影響力を解析して、第２の評価点数を生成するスキル解析手段支援システムを提供する。
【発明の効果】
【０００８】
人物のスキル診断担当者の経験や勘に頼らず、技術力に応じたスキル判断を誰もが適正に作成できるようになる。
【図面の簡単な説明】
【０００９】
【図１】本実施例の技術力判断支援システムの機能ブロックを示す図である。
【図２】本実施例の技術力判断支援システムの解析部分の例を示す図である。
【図３】本実施例の技術力判断支援システムの解析部分の例を示す図である。
【図４】本実施例の技術力判断支援システムの表示部分を示す図である。
【図５】本実施例の技術力判断支援システムの表示部分を示す図である。
【実施例１】
【００１０】
特定の人物の技術力の可視化の一つとして、オープンソースがある。人物のスキル判断において、人物ごとにスキルに差があり、特にスキル情報が多いオープンソースデータは情報の収集を含めて効果的な技術力の測定ができていない。
【００１１】
本実施例においては技術力判断支援システムの一例として、オープンソース解析サービスを提供するオープンソース解析採点システムについて説明する。本オープンソース解析採点システムは、インターネット上のオープンソースあるいはオープンソースに付随して提供されるソーシャルに対する影響力から人物のスキル判定を行う際に使用するシステムである。
【００１２】
本実施例の技術力判断支援システムを概略的に説明すると、ユーザがユーザ端末にオープンソースのアカウント情報を入力するとユーザの端末からデータベースにリクエストが飛びデータベース上でデータ処理及びデータの格納が行われる。データベース上で解析された結果、ユーザ端末に表示されユーザはプログラミング言語における解析結果とその解析結果に対するアドバイスを取得できる。
【００１３】
図１は、技術力判断支援システム１０００の概念図を示す。技術力判断支援システム１０００は、入力手段１０１０、入力情報解析手段１０２０、入力の比較解析手段１０３０、点数計算手段１０４０、入力情報または解析結果表示手段１０５０、入力情報評価ルールデータベース１１１０、入力の比較解析ルールデータベース１１２０、点数計算データベース１１３０、入力情報および解析結果記憶データベース１１４０、制御手段１２００を備える。
【００１４】
ユーザ端末１３００は、インターネット上のオープンソースを公開しているアカウントとまたそのプログラミング言語の技術力情報を表示することにより、後述するユーザの技術力判定結果を表示するための装置である。ユーザ端末１３００は、オープンソースを公開しているアカウント情報と所定の表示ができる機能が備わっていればよく、いわゆるパーソナルコンピュータ、タブレット端末、スマートフォン、その種類は問わない。なお、本実施例は、ユーザ端末１３００は、技術力判断支援システム１０００外部に配置されているが、別の実施例として、ユーザ端末が技術力判断支援システム１０００の内部に配置されていてもよい。
【００１５】
入力手段１０１０は、ユーザ端末１３００から入力されたアカウントデータを取得する。
【００１６】
入力情報解析手段１０２０は、入力手段１０１０から取得したアカウントデータを基に、該当アカウントのオープンソースデータ１４００を読み込む。ここで、入力されるデータの種類の一例は以下の（１）〜（５）である。
【００１７】
（１）イシュー（Ｉｓｓｕｅ）やマージの可否や提案内容を含むプルリクエスト（Ｐｕｌｌ  Ｒｅｑｕｅｓｔ）：当該プルリクエストをベースにしてプルリクエストで扱われる言語、プルリクエストが取り込まれたかどうかなどの影響度、どんなリポジトリに対してどう影響が起こったかの良さを判定することができる。
【００１８】
（２）ＧｉｔＨｕｂ内で作られた組織のデータ：当該データをベースにして、組織がどういうユーザで構成されているか、組織がどういうリポジトリを持っているかなどの組織レベルを判定することができる。
【００１９】
（３）ＲＥＡＤＭＥやソースコードのデータ：当該データをベースにして、リポジトリの言語やリポジトリにあるコードの良さを判定することができる。
【００２０】
（４）ユーザそのもののデータ、リポジトリにおけるスター数やコミット数などの定量的なデータ：ＡＰＩなどで提供されるコミット数やプルリク数、フォロワー数などの定量情報そのもの
【００２１】
（５）ユーザ間におけるフォロー情報：当該情報をベースにして人脈の定量値を判定することができる。
【００２２】
上述したデータは、「誰が」「どういう情報を」「いつ作成したか」というようなデータが整理され格納されている状態である。なお、この時点におけるデータに対する良し悪しなどのデータ判定は行っていない。
【００２３】
入力情報解析手段１０２０はオープンソースデータを読み込んだ後、複数の情報に分解され分解された情報に対しそれぞれ解析装置手段の解析が行われるかまたは定量情報そのものが使われる。
【００２４】
（１）イシューやマージの可否や提案内容を含むプルリクエストの流れについて説明する。
入力情報解析手段１０２０は、オープンソースデータにおける既存のプログラミング言語におけるオープンソースへの改善提案や改善提案内容もしくは情報の提供などをもとに、プログラミング言語、プログラミング言語を用いた他のオープンソースへの影響度を解析する。
【００２５】
プルリクエスト解析装置で解析された定量情報および量子化された情報は入力情報および解析結果記憶データベース１２４０に格納される。解析結果記憶ＤＢ１２４０に記憶されるデータ構造の一例を表１に示す。
【００２６】
【表１】
2020035077.tif 000003
【００２７】
（２）ＧｉｔＨｕｂ内で作られた組織のデータの流れについて説明する。
オープンソースデータにおける該当アカウントの所属するコミュニティをもとに、組織解析装置にて、事前に解析された組織またはそのコミュニティや組織のレベル、組織の影響度を解析する。
【００２８】
組織解析装置で解析された定量情報及び量子化された情報は入力情報および解析結果記録データベースに格納される。
【００２９】
【表２】
2020035077.tif 000004
【００３０】
（３）ＲＥＡＤＭＥやソースコードのデータの流れについて説明する。
該当人物が公開したソースコードやＲＥＡＤＭＥなどのオープン情報をもとに、プログラミング言語技術力解析装置にて、事前に解析されたプログラミング言語またはそのプログラミング言語におけるレベル、文章のわかりやすさなどの影響を解析する。
【００３１】
プログラミング言語技術力解析装置で解析された定量情報および量子化された情報は入力情報および解析結果記録データベースに格納される。
【００３２】
【表３】
2020035077.tif 000005
【００３３】
【表４】
2020035077.tif 000006
【００３４】
（４）ユーザそのもののデータ、リポジトリにおけるスター数やコミット数などの定量的なデータの流れについて説明する。
オープンソース情報データソースにて提供された情報は入力情報および解析結果記録データベースに格納される。
【００３５】
【表５】
2020035077.tif 000007
【００３６】
（５）ユーザ間におけるフォロー情報の流れについて説明する。
オープンソースデータにおける回答アカウントがフォローしているもしくはフォローされるアカウントや組織をもとに、人脈解析装置にて、事前に解析されたアカウントまたは組織やアカウントと組織のレベル、アカウントや組織の影響度を基に関係を解析する。
【００３７】
人脈解析装置で解析された定量情報及び量子化された情報は入力情報および解析結果記録データベースに格納される。
【表６】
2020035077.tif 000008
【００３８】
入力情報および解析結果記録データベースにおいて格納されたデータの整理を行う。
【００３９】
データの整理を基に技術力判断支援システムの解析部分にてアカウントにおける統合的な各言語のスコア化を行う。ここでは、機械学習で作成された計算モデルを利用し、数値結果の取得を行う。
【００４０】
技術力判断支援システムにおいて判断結果のアドバイスを作成する。
【００４１】
入力情報および解析結果記録データベースにおいて解析された情報、また技術力判断支援システムの解析部分にて行われた統合的な各言語のスコア化情報と判断結果のアドバイス情報の作成を技術力判断支援システムの表示部分にて解析結果を表示する。
【００４２】
【表７】
2020035077.tif 000009
【００４３】
【表８】
2020035077.tif 000010
【実施例２】
【００４４】
本実施例では、ユーザが自身のユーザスキルを評価依頼したときの処理について、図２を参照しながら説明する。
【００４５】
Ｓ２０１０では、自身のスキルを評価依頼したユーザが保持するレポジトリをオープンソース情報ＤＢ１４００から取得する。ここで、オープンソース情報ＤＢ１４００は、ＧｉｔＨｕｂ（登録商標）やＢｉｔＢｕｃｋｅｔやＧｉｔＬａｂなどに公開されている公開データを基に得られたものをさす。
【００４６】
Ｓ２０２０では、コードの言語の種別（Ｐｅｒｌ、Ｐｙｔｈｏｎなど）、ソースコードの構文解析、イシュー／プルリクエストの数に基づいて、レポジトリを数値化（得点化）する。得点化の手法については、例えば、加点／減点となる項目・対象（例えば、加点／減点の最大値の範囲内で、イシュー／プルリクエストの数に応じて所定の点数を加点／減点をするなど）を予め設定をするような手法でもよい。
【００４７】
Ｓ２０３０では、数値化されたレポジトリと偏差値との関係を機械学習させる。ここで、本実施例の偏差値は、プログラミングスキルを有するユーザ集合の中で、あるユーザの相対的なスキルレベルを示すものである。ただし、相対的なスキルレベルを示すためには、ある程度のユーザ数が必要になるので、例えば、本実施例のシステムにおいて、複数の仮想的なユーザを設定しておき、仮想的なユーザそれぞれのスキルの得点を予め設定しておいてもよい。
【００４８】
Ｓ２０４０では、組織やフォロー数などの他のユーザとの依存関係をパラメータとして保存してあるＤＢにアクセスして、当該パラメータを取得する、
【００４９】
Ｓ２０５０では、取得したパラメータに基づいて、機械学習モデルを更新する。
【００５０】
Ｓ２０６０では、ユーザスキルを偏差値として算出する。ここで、付加的な処理として、ユーザのプログラミング能力の全体的なものを偏差値として算出している。また、個別言語における偏差値も算出する。ここで、各言語の偏差値に対し、「あなたは．．．で強みがあります。偏差値をあと５上げるには、コードを毎日ＸＸＸ回上げていくと上がるでしょう。」などのようなアドバイスを提示するような処理を実行してもよい。この解析において、言語ごとに既存に分析された情報と比較し、該当するユーザの言語別のスコアを算出する。また、この解析を行うことでどういった事を行うとスコアが上がるかのアドバイスを提供してもよい。また、データベースで解析されないデータも含め、解析済みの言語別のスコアとアドバイスをウェブ上のサービスとして可視化を行うような処理を実行してもよい。
【実施例３】
【００５１】
本実施例では、実施例２の別の態様を示す。
【００５２】
まず、この解析では、該当ユーザに関するデータベースに保存されたユーザに関する量子化データ、リポジトリに関する量子化データ、プルリクエストに関する量子化データの３つを抽出する。
【００５３】
次に、事前に機械学習により生成された学習モデルの準備と各量子化データのパラメータとそのしきい値や基準値や分散を定義しておく。
【００５４】
学習モデルとそれらの定義されたデータに対し、抽出された言語別のデータから各パラメータに関する情報を計算し、各言語におけるスコアを算出する。
【００５５】
算出されたスコアは、事前に定義された基準の値と分散からスキル偏差値として偏差値にコンバートされる。
【００５６】
一例を挙げる。
（１）あるユーザの、ＡＰＩから取得したデータである総スター数は１００、リポジトリ数は２０あるとする。（項目はこれ以外にもたくさんあるが２つの指標を使っての解析とした場合の例）
（２）総スター数に関する標準化パラメータをレンジ５０、平均値３０、リポジトリ数に関する標準化パラメータをレンジ４０、平均値２０、と事前に機械学習により算出済みである。
（３）既にサポートベクター回帰で作成した機械学習モデルに対し、１のデータと２で作成したデータを使ってトータルのスキル偏差値の予測を行う。
（４）予測によって算出されたトータルのスキル偏差値から、各言語がリポジトリで占める割合を計算し、言語におけるスキル偏差値をそれぞれ算出する。
【００５７】
別の一例を挙げる。
【００５８】
前提として、ユーザＡは、データソースＧｉｔＨｕｂにおいて公開している情報を持っている。ＲｕｂｙとＰＨＰとＰｙｔｈｏｎのプログラムを３種類のリポジトリでそれぞれ保持し公開している。また、ユーザが持たない外部のリポジトリに対し、Ｒｕｂｙのイシューを立てている。また、プルリクエストとしてＲｕｂｙのプログラムを書いて修正提案を行い、取り込みが完了した状態であるとする。
【００５９】
データベース格納前の一次解析処理１
この時、Ｒｕｂｙはイシューを立てているので、イシューとして問題報告の情報提供を行っていると認識され、どのリポジトリに対し情報を立てているかの情報を持つ。また、プルリクエストしてＲｕｂｙのプログラムの修正提案を行っており、該当するリポジトリに対して取り込みが完了した状態になっているため、以下の情報を基に量子化を行なう。この際に、ＡＰＩで提供されていない、イシュー数、プルリクエスト数などを集計し量子化した後にデータベースに格納される。
【００６０】
データベース格納前の一次解析処理２
また、ユーザＡは、自分がどういう組織に入っているかを持っており、その組織が提供しているソースコードや所属するユーザ情報を取得し集計を行い量子化してデータベースに格納される。
【００６１】
データベース格納前の一次解析処理３
さらに、そもそもリポジトリとしてどういうデータを持っているか・リポジトリごとの他者からの評価やそのリポジトリに対してどうしうどういう人をフォローしたりフォローされているかの情報があり、その情報を基に、所属するユーザ情報とそのユーザが書いたソースコードを基に集計し量子化した状態でデータベースに格納される。
【００６２】
データベース格納後の本解析
データベースに格納された情報を基に本解析を行なう。この解析では、一例にあるように、量子化されたデータとそれぞれの項目に対するレンジと平均値、分散などの事前に解析し定義されたパラメータを機械学習のモデルに対してかけることにより、機械学習のモデルから算出する。算出されたデータを基に偏差値に直し、ユーザに提供する。
【実施例４】
【００６３】
本実施例では、ユーザが自身のユーザスキルを評価依頼し、ユーザに対して最初に偏差値を提示した時点（基準）より後に、再度評価依頼をしたときの処理について、図３を参照しながら説明する。
【００６４】
Ｓ３０１０では、最初に偏差値を算出した時点（時間）を記憶する。本実施例では、この時点を基準時と称する。
【００６５】
Ｓ３０２０では、基準時点のパラメータの情報を取得して記憶する。
【００６６】
Ｓ３０３０では、基準時点から現時点までのパラメータの情報を、パラメータの更新時間と共に取得して記憶する。ここで、現時点とは、ユーザが、新たに評価を依頼した時点である。
【００６７】
Ｓ３０４０では、図３（ｂ）に示すような重み付けの曲線グラフを活用して、各パラメータの重み付けを決定する。図３（ｂ）に示すグラフは、基準時より前の時間に更新されたパラメータの重みは高くなる一方で、基準時より後の時間に更新されたパラメータの重みは低くなるように構成されている。
【００６８】
Ｓ３０５０では、新たに更新されたパラメータに基づいて、機械学習モデル（ニューラルネットワーク、ＳＶＲ（Ｓｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｒｅｇｒｅｓｓｉｏｎ：サポートベクター回帰）など）を更新する。
【００６９】
Ｓ３０６０では、ユーザスキルを数値（偏差値）で算出する。Ｓ２０６０と同様に、アドバイスをユーザに提供してもよい。
【００７０】
本実施例によれば、自身の評価後に、ユーザ自身の評価が変動するようなアクティビティが意図的に行われても、自身の評価の変動幅が行って範囲内におさまるので、適正範囲内での評価を維持することができるようになる。
【００７１】
以上のように本発明の実施態様について説明したが、上述の説明に基づいて当業者にとって種々の代替例、修正又は変形が可能であり、本発明はその趣旨を逸脱しない範囲で前述の種々の代替例、修正又は変形を包含するものである。
【符号の説明】
【００７２】
技術力判断支援システム１０００、入力手段１０１０、入力情報解析手段１０２０、入力の比較解析手段１０３０、点数計算手段１０４０、入力情報または解析結果表示手段１０５０、入力情報評価ルールデータベース１１１０、入力の比較解析ルールデータベース１１２０、点数計算データベース１１３０、入力情報および解析結果記憶データベース１１４０、制御手段１２００、ユーザ端末１３００、オープンソース情報ＤＢ１４００
【図１】
2020035077.tif 000011
【図２】
2020035077.tif 000012
【図３】
2020035077.tif 000013
【図４】
2020035077.tif 000014
【図５】
2020035077.tif 000015