Пример #1
0
 def __init__(self, accessor, headerIndexPrefix):
     self.accessor = accessor
     self.headerIndex = HeadersFileIndex(accessor, headerIndexPrefix)
     self.prefix = headerIndexPrefix
     self.tokenSplitter = TokenSplitter()
     self.posTagger = POSTagger()
     FragmentConfig(accessor.directory)
Пример #2
0
    def preProcess(self):
        # коннект к базе, параметры надо вынести в конфиг и получать через accessor
        self.dbConnection = pymysql.connect(host='localhost',
                                            port=3306,
                                            user='******',
                                            passwd='',
                                            charset='utf8',
                                            db='wikiparse')
        # курсор коннекта для запросов
        self.dbCursor = self.dbConnection.cursor()
        # класс для получения
        self.posTagger = POSTagger()
        # индекс редиректов
        self.redirects = self.accessor.getIndex(RedirectsIndex)
        # индекс текстов статей, очищенных от вики-разметки
        self.plainTextIndex = self.accessor.getIndex(WikiPlainTextIndex)
        self.clear()
        # список начальных форм глаголов
        self.stems = {}
        # разделялка на слова
        self.wordSplitter = TokenSplitter()
        # запросы
        self.addStemQuery = "INSERT INTO verbs(stem) VALUES (%s)"
        self.getStemIdQuery = "SELECT id FROM verbs WHERE stem LIKE %s"
        self.insertVerbToDocQuery = "INSERT INTO verb_to_doc(doc_id,verb_id,is_ambig,position,score) VALUES "
        self.queryElement = "(%s, %s, %s, %s, %s)"

        # выбираем те записи, которые уже есть
        self.dbCursor.execute("SELECT * FROM verbs ORDER BY id")
        for stem in self.dbCursor.fetchall():
            self.stems[stem[1]] = stem[0]
Пример #3
0
def listsTest():
    from pytextutils.token_splitter import TokenSplitter
    text = '''
1. Введение
    Перечислим основные виды замены, характерные для повторных номинаций в новостных текстах:

(1) замена ИГ на ИГ, которой соответствует вышестоящий концепт:губернатор — глава, область — регион, дума — парламент;
(2) замена имени экземпляра (имени собственного или названиядескрипции) на ИГ, которой соответствует родительский концепт экземпляра: МЧС — министерство, Приморский край — край;
(3) замена ИГ с семантикой базового концепта на ИГ с семантикойаспекта: компания — ритейлер;
Наиболее распространены в
качестве номинаций лица функциональные имена (названия лиц
по должности, роду занятий, титулы, ранги, звания), реляционные
имена (например, термины родства) и актуальные имена (носители
ситуативного признака, например кандидат в ситуации выборов).
Перечислим основные виды замены, характерные для повторных номинаций в новостных текстах:

     Список литературы
[1] Кронгауз М. А. Семантика. М : РГГУ, 2001. –– 299 c. ↑1
[2] Giv`on T. Coherence in text, coherence in mind // Pragmatics and cognition,1993. Vol. 1(2) ↑1
[3] Валгина Н. С. Теория текста: Учебное пособие. М. : Логос, 2003. ↑1
[4] Фёдорова О. С. Текстовая анафора: сочетание статистического икогнитивного подходов (на материале цахурского языка) // ТрудыМеждународного семинара Диалог-2000 по компьютерной лингвистике и ееприложениям. –– Протвино, 2000. Т. 1 ↑1, 1.1
   '''

    ts = TokenSplitter()
    ts.split(text)
    tokens = ts.getTokenArray()

    print(len(tokens))

    lm = ListMatcher()
    lm.combineTokens(tokens)

    print(len(tokens))
Пример #4
0
 def __init__(self, accessor, headerIndexPrefix=None, configuration=None):
     self.accessor = accessor
     self.headerIndex = HeadersFileIndex(accessor, '')
     self.prefix = headerIndexPrefix
     self.tokenSplitter = TokenSplitter()
     self.posTagger = POSTagger()
     if configuration:
         self.fragmentTypesToHeaders = configuration
     else:
         FragmentConfig(accessor.directory)
         self.fragmentTypesToHeaders = FragmentConfig.fragmentTypesToHeaders
Пример #5
0
 def mark(self,text):
     fragments = []
     ts = TokenSplitter()
     ts.split(text)
     tokens = ts.getTokenArray()
        
     ss = SentenceSplitter()
     ss.combineTokens(tokens)
     bestDistances = {}
     for sentence in tokens:
         hist = calcHist(sentence.internalTokens)
         for POS in hist 
Пример #6
0
    def __init__(self, directory=None, file=None, text=None, clearWrap=True):
        if file:
            cleaner = TextCleaner(directory, clearWrap)
            self.directory = directory
            self.file = file
            with codecs.open(directory + self.file, 'r', "utf-8") as myfile:
                self.text = myfile.readlines()

            self.text = cleaner.clean(self.text)
        elif text:
            self.text = text
        else:
            print('There is no text or file to parse')
            self.text = ''
        self.tokenSplitter = TokenSplitter()
        self.posTagger = POSTagger()
Пример #7
0
    def __init__(self, accessor, prefix):
        #self.hists
        #self.tfidf
        #self.patterns

        self.tokenSplitter = TokenSplitter()
        self.posTagger = POSTagger()
        self.flSelector = FormalLanguagesMatcher()
        self.defisWordsBuilder = DefisWordsBuilder()
        self.initialsWordsBuilder = InitialsWordsBuilder()
        self.formalLanguagesMatcher = FormalLanguagesMatcher()
        self.headersMatcher = HeaderMatcher()
        self.sentenceSplitter = SentenceSplitter()

        self.posListIndex = POSListIndex(accessor, prefix)
        self.collocatonsGrammars = CollocationGrammars(accessor, prefix)
        self.fragmentTypes = self.collocatonsGrammars.getFunctionalTypes()
        self.verbs = self.posListIndex.getVerbsHistsForAllTypes()
        self.patternMatcher = PatternMatcher()

        self.sq = lambda x: x * x
        self.sums = {}
        for fType in self.verbs:
            self.sums[fType] = self.module(self.verbs[fType])
Пример #8
0
def headersTest():
    from pytextutils.token_splitter import TokenSplitter
    text = '''Введение
Одной из важнейших задач в сфере обработки естественного языка (Natural Language Processing, NLP) является извлечение фактографической информации (information extraction, event extraction), то есть извлечение структурированной информации о ситуации заданного типа из текстов на естественном языке (в первую очередь мы ориентируемся на тексты СМИ). Структура (фрейм) извлеченной информации зависит от поставленной задачи, но в самом типичном случае извлекается упоминание о событии и атрибуты события: где произошло событие, его участники и тому подобное (Подробнее об этом смотрите [1])
Для получения более полной картины необходимо также извлечь модальные и темпоральные характеристики события. Настоящая статья посвящена анализу модального аспекта.
В отличие от существующих подходов к этому вопросу, особое внимание уделяется тому, как следует анализировать события, находящиеся в сфере действия разнородных маркеров модальности.
Учитывается максимально широкий круг модальных модификаторов: не только модальные глаголы и вводные конструкции со значением достоверности (которые обычно в первую очередь рассматриваются всеми авторами в теме модальность), но и показатели цитирования, фактивные и импликативные глаголы и тому подобное
1. Основные понятия
Поскольку в терминологии по теме «модальность» существует множество разночтений, необходимо начать с определения основных терминов, которыми мы будем пользоваться.
1.1. Понятие пропозиции
Прежде, чем вплотную подойти к обсуждению модальности, нам необходимо упомянуть крайне важное для этой темы понятие пропозиции (в данном случае это лингвистический термин, не идентичный пропозиции в логике).

    '''

    ts = TokenSplitter()
    ts.split(text)
    tokens = ts.getTokenArray()

    print(len(tokens))

    hm = HeaderMatcher()
    hm.combineTokens(tokens)

    print(len(tokens))
Пример #9
0

directory = "C:\\[Study]\\Diploma\\wiki_indexes\\"
tc = TextCleaner(directory)
tc1 = TextCleaner(directory)
print(tc1)
text = '''
рис.1 и т.д.
и пр.
'''
tc = TextCleaner(directory)
print(tc.clean(text))
file = "sule1.txt"
textStat = TextStat(directory + file)
print(textStat.text)
from pytextutils.grammar_formal import HeaderMatcher

ts = TokenSplitter()
ts.split(textStat.text)
tokens = ts.getTokenArray()
hm = HeaderMatcher()
hm.combineTokens(tokens)

for token in tokens:
    if token.tokenType == 4:  # complex token
        print(token.token)

# for file in ["texts/ladno.txt","texts/sule1.txt","texts/sule2.txt","texts/sule3.txt"]:
#    textStat = TextStat(directory,file=file)
#    textStat.buildPOSSurface()