Example #1
0
 def load_doc(project_name="android27", version="v1"):
     """
     project_name: jdk8 android27
     """
     document_collection_path = PathUtil.doc(pro_name=project_name,
                                             version=version)
     return MultiFieldDocumentCollection.load(document_collection_path)
from project.utils.path_util import PathUtil
from sekg.ir.doc.wrapper import MultiFieldDocumentCollection, MultiFieldDocument
from sekg.graph.exporter.graph_data import GraphData
from sekg.graph.exporter.graph_data import NodeInfo
import json
from definitions import OUTPUT_DIR
from pathlib import Path

pro_name = 'jabref'
dc_file_location = PathUtil.doc(pro_name=pro_name, version='v1')
graph_data_file_location = PathUtil.graph_data(pro_name=pro_name,
                                               version='v1.8')
dc_file_destination = PathUtil.doc(pro_name=pro_name, version='v1.1')
comment_json_file = Path(OUTPUT_DIR) / "json" / "mid_2_dp_comment.json"
qualified_name_json_file = Path(
    OUTPUT_DIR) / "json" / "mid_2_qualified_name.json"

if __name__ == '__main__':
    doc_collection: MultiFieldDocumentCollection = MultiFieldDocumentCollection.load(
        dc_file_location)
    graph_data: GraphData = GraphData.load(graph_data_file_location)

    comment_list = []
    comments = open(comment_json_file, 'r').readlines()
    for line in comments:
        comment_list.append(json.loads(line))

    qualified_name_list = []
    names = open(qualified_name_json_file, 'r').readlines()
    for line in names:
        qualified_name_list.append(json.loads(line))
Example #3
0
from flask import Flask, request, jsonify
from flask_cors import CORS
from sekg.ir.doc.wrapper import MultiFieldDocumentCollection, MultiFieldDocument
from sekg.graph.exporter.graph_data import GraphData, NodeInfo

from project.knowledge_service import KnowledgeService
from project.doc_service import DocService
from project.json_service import JsonService
from project.utils.path_util import PathUtil

app = Flask(__name__)
cors = CORS(app, resources={r"/*": {"origins": "*"}})
pro_name = "jabref"
data_dir = PathUtil.doc(pro_name=pro_name, version="v1.2")
graph_data_path = PathUtil.graph_data(pro_name=pro_name, version="v1.8")
graph_data: GraphData = GraphData.load(graph_data_path)
doc_collection: MultiFieldDocumentCollection = MultiFieldDocumentCollection.load(
    data_dir)
knowledge_service = KnowledgeService(doc_collection)
doc_service = DocService()
json_service = JsonService()


@app.route('/')
def hello():
    return 'success'


# search doc info according to method name
@app.route('/get_doc/', methods=["GET", "POST"])
def doc_info():
from project.utils.path_util import PathUtil
from pathlib import Path
from sekg.graph.exporter.graph_data import GraphData, NodeInfo
from sekg.ir.doc.wrapper import MultiFieldDocument, MultiFieldDocumentCollection
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.cluster import KMeans
import definitions
import json
'''
将样例代码进行聚类划分并输出
'''

pro_name = "jabref"
graph_data_path = PathUtil.graph_data(pro_name=pro_name, version="v3.9")
doc_collection_path = PathUtil.doc(pro_name=pro_name, version="v3.2")
doc_collection_save_path = PathUtil.doc(pro_name=pro_name, version="v3.3")
api_to_example_json_path = Path(
    definitions.ROOT_DIR) / "output" / "json" / "api_2_example_sorted.json"
mid_to_method_info_json_path = Path(
    definitions.ROOT_DIR
) / "output" / "json" / "mid_2_method_info_without_comment.json"

graph_data: GraphData = GraphData.load(graph_data_path)
doc_collection: MultiFieldDocumentCollection = MultiFieldDocumentCollection.load(
    doc_collection_path)

# 读取sample code文件. api_to_mid: 每个api对应的sample code的mid. methods_info: 每个mid对应的代码
with open(api_to_example_json_path, 'r') as f:
    api_to_mid = json.load(f)
f.close()
Example #5
0
from sekg.graph.exporter.graph_data import NodeInfo, GraphData
from sekg.ir.doc.wrapper import MultiFieldDocumentCollection, MultiFieldDocument

from project.utils.path_util import PathUtil

pro_name = "jabref"
doc_path = PathUtil.doc(pro_name=pro_name, version="v1")
graph_data_path = PathUtil.graph_data(pro_name="jabref", version="v1")
graph_data = GraphData.load(graph_data_path)
doc_collection: MultiFieldDocumentCollection = MultiFieldDocumentCollection.load(
    doc_path)
# e.g. org.jabref.model.metadata.event.MetaDataChangedEvent
api_name = "org.jabref.model.metadata.event.MetaDataChangedEvent"
node = graph_data.find_one_node_by_property(property_name='qualified_name',
                                            property_value=api_name)
api_id = node["id"]
doc: MultiFieldDocument = doc_collection.get_by_id(api_id)
return_data = dict()
return_data['doc_info'] = dict()
return_data['api_name'] = api_name
return_data['doc_info']['full_html_description'] = doc.get_doc_text_by_field(
    'full_html_description')
return_data['doc_info']['full_description'] = doc.get_doc_text_by_field(
    'full_description')
return_data['doc_info']['sentence_description'] = doc.get_doc_text_by_field(
    'sentence_description')
print(return_data)
Example #6
0
 def __init__(self):
     pro_name = "jabref"
     data_dir = PathUtil.doc(pro_name=pro_name, version="v3.3")
     self.doc_collection: MultiFieldDocumentCollection = MultiFieldDocumentCollection.load(
         data_dir)
Example #7
0
from project.utils.path_util import PathUtil
from sekg.graph.exporter.graph_data import GraphData, NodeInfo
from sekg.ir.doc.wrapper import MultiFieldDocument, MultiFieldDocumentCollection
import json
import definitions
from pathlib import Path

pro_name = 'jabref'
graph_data_path = PathUtil.graph_data(pro_name=pro_name, version='v3.9')
doc_collection_path = PathUtil.doc(pro_name=pro_name, version='v3.1')
doc_collection_save_path = PathUtil.doc(pro_name=pro_name, version='v3.2')
api_to_example_json_path = Path(
    definitions.ROOT_DIR) / "output" / "json" / "api_2_example_sorted.json"
mid_to_method_info_json_path = Path(
    definitions.ROOT_DIR
) / "output" / "json" / "mid_2_method_info_without_comment.json"
graph_data: GraphData = GraphData.load(graph_data_path)
doc_collection: MultiFieldDocumentCollection = MultiFieldDocumentCollection.load(
    doc_collection_path)
'''
doc文件抽取样例代码
'''


def find_doc(qualified_name):
    node: NodeInfo = graph_data.find_one_node_by_property(
        property_name='qualified_name', property_value=qualified_name)
    if node is None:
        node: NodeInfo = graph_data.find_one_node_by_property_value_starts_with(
            property_name='qualified_name',
            property_value_starter=qualified_name)
Example #8
0
                node_id)
            if node_doc:
                full_description = node_doc.get_doc_text_by_field(
                    'full_description')
                for concept_list_item in self.concepts_list:
                    concept_node_id = -1
                    for concept in concept_list_item:
                        if concept in self.concept_2_node_id:
                            concept_node_id = self.concept_2_node_id[concept]
                            break
                    if concept_node_id >= 0:
                        for concept in concept_list_item:
                            if concept in full_description:
                                self.graph.add_relation(
                                    node_id, "has concept", concept_node_id)
                                break
        print("relation添加完毕")


if __name__ == "__main__":
    concept_and_relation_path = Path(DATA_DIR) / "concept_and_relation"
    concept_2_graph = Concept2Graph(
        PathUtil.graph_data("jabref", "v3.8"),
        PathUtil.doc(pro_name="jabref", version='v3.3'),
        str(concept_and_relation_path / "concepts.json"),
        str(concept_and_relation_path / "relations.json"))
    concept_2_graph.add_concept_2_graph()
    concept_2_graph.add_relation_2_graph()
    concept_2_graph.graph.save(PathUtil.graph_data("jabref", "v3.9"))
    print("图导入完成")
Example #9
0
from sekg.ir.doc.wrapper import MultiFieldDocumentCollection
from sekg.graph.exporter.graph_data import GraphData, NodeInfo

from project.knowledge_service import KnowledgeService
from project.doc_service import DocService
from project.json_service import JsonService
from project.utils.path_util import PathUtil
from pathlib import Path
import definitions
import json

app = Flask(__name__)
cors = CORS(app, resources={r"/*": {"origins": "*"}})

pro_name = "jabref"
doc_dir = PathUtil.doc(pro_name=pro_name, version="v3.3")
graph_data_path = PathUtil.graph_data(pro_name=pro_name, version="v3.10")
graph_data: GraphData = GraphData.load(graph_data_path)
doc_collection: MultiFieldDocumentCollection = MultiFieldDocumentCollection.load(
    doc_dir)
simple_qualified_name_map_path = Path(
    definitions.ROOT_DIR) / "output" / "simple_qualified_name_map.json"

knowledge_service = KnowledgeService(doc_collection, graph_data)
doc_service = DocService()
json_service = JsonService()
with open(simple_qualified_name_map_path, 'r') as f:
    json_str = f.read()
simple_qualified_name_map = json.loads(json_str)
print("load complete")