mpkato/mobileclick

View on GitHub
examples/your_summarization_method.py

Summary

Maintainability
A
0 mins
Test Coverage
from mobileclick.methods import BaseSummarizationMethod
from mobileclick import Summary

class YourSummarizationMethod(BaseSummarizationMethod):
    def init(self, tasks):
        '''
        Initialization

        `tasks` is a list of Task instances.
        Task.query: Query
        Task.iunits: a list of Iunit instances
        Task.intents: a list of Intent instances
        Task.indices: a list of Index instances

        Query:
        Query.qid: Query ID
        Query.body: string of the query

        Iunit:
        Iunit.qid: Query ID
        Iunit.uid: iUnit ID
        Iunit.body: string of the iUnit

        Intent:
        Intent.qid: Query ID
        Intent.iid: Intent ID
        Intent.body: string of the intent

        Index (index information of a webpage in the provided document collection):
        Index.qid: Query ID
        Index.filepath: filepath of an HTML file
        Index.rank: rank in a search engine result page
        Index.title: webpage title
        Index.url: webpage url
        Index.body: summary of the webpage
        '''

    def summarize(self, task):
        '''
        Output Summary that consists of the first layer
        and second layers.

        How to create Summary:
        (qid: Query ID, iunit*: Iunit instance, intent*: Intent instance)

        summary = Summary.new(qid,
            # first layer
            [iunit1, iunit2, intent1, intent2],
            # second layer
            {
                intent1.iid: [iunit3, iunit4],
                intent2.iid: [iunit3, iunit5]
            }
        )
        summary.add(iunit6) # added to the first layer
        summary.add(iunit7, intent1.iid) # added to the second layer
        summary.add(intent3) # added to the first layer
        summary.add(iunit8, intent3.iid) # added to the second layer

        The resultant summary is
            First layer:
                iunit1, iunit2, intent1, intent2, iunit6, intent3
            Second layer:
                intent1: iunit3, iunit4, iunit7
                intent2: iunit3, iunit5
                intent3: iunit8

        e.g. Random summarization method
        return Summary(task.query.qid, task.iunits)
        '''
        return Summary(task.query.qid, task.iunits)

if __name__ == '__main__':
    from mobileclick import Task
    tasks = Task.read(
        "data/MC2-test/en/MC2-E-queries.tsv",
        "data/MC2-test/en/MC2-E-iunits.tsv",
        "data/MC2-test-documents/MC2-E.INDX",
        "data/MC2-test-documents/MC2-E.HTML",
        "data/MC2-test/en/MC2-E-intents.tsv")
    method = YourSummarizationMethod()
    run = method.generate_run("YourRun", "This is your run", tasks)
    run.save('./')