使用 Stanford CoreNLP 语义分割段落的问题

问题描述 投票:0回答:0

所以我有一个名为“活动”的列,每一行都包含文本值,有些包含符号,例如“*、-、/n、...”,有些则没有。我尝试根据“/n”对活动进行细分,但很多行并没有以这种方式呈现,所以我决定改用像 CoreNLP 这样的工具。

我希望分析文本并根据量刑将段落分成活动并将相关句子组合在一起。

我为此实现了以下功能:

def segment_activities(text):
    # Tokenize the paragraph into individual words and punctuation marks
    tokens = nltk.word_tokenize(text)

    # Identify the boundaries of each sentence
    sentences = nltk.sent_tokenize(text)

    # Assign a part-of-speech tag to each word
    pos_tags = nltk.pos_tag(tokens)

    # Analyze the grammatical structure of the sentences and identify the relationships between words
    dependency_parser = nltk.parse.corenlp.CoreNLPDependencyParser()
    dependency_trees = []
    for parse in dependency_parser.parse_sents(sentences):
        for dep_graph in parse:
            # Convert the DependencyGraph object to a list of triples
            triples = list(dep_graph.triples())
            dependency_trees.append(triples)

    # Group related activities
    activities = []
    for i, tree in enumerate(dependency_trees):
        activity = []
        for trip in tree:
            if trip[1] in ['nsubj', 'dobj', 'iobj']:
                activity.append(trip[0][0])
                activity.append(trip[2][0])
        if activity:
            activities.append(' '.join(activity))
    
    return activities

但我得到了可怕的结果

array([list(['e u e f', 't i t e u e u', 'j i', 't p t u', 't i t i t i p t p i p i', 'l r', 'p i p p t i', 'ti', 't I t g t g v i', 'vi v i m c', 'T u', 't I t g']), list(['e', 'é r h e i i 0 e']), list(['l I l u t n']), ..., 列表([]),列表([]),列表([])],dtype=object)

我不知道如何修复它,所以我搜索了其他替代方案:在 CoreNLP 网站上,我发现他们有一个针对 Python 的包,他们正在开发一个名为 Stanza 的包。我决定试一试:

import stanza

def try_stanza(text, nlp = stanza.Pipeline(lang='fr', processors='tokenize')):
    doc = nlp(text)
    for i, sentence in enumerate(doc.sentences):
        print(f'====== Sentence {i+1} tokens =======')
        print([sentence.text for sentence in doc.sentences])
# Apply the segment_activities function to the text column
df['activities01'] = df['all_activities'].apply(try_stanza)

这给出了有希望的结果,但似乎有时该段落会重复多次。比如这句话重复了21次,每次都会说like sentence 1, sentence 2, sentence 3, ..., sentence 21

Sentence 1 tokens =======
Développement de reporting sur-mesure avec zend framework', '- Conception et développement des datamarts projets', '- Réalisation des comptages et extractions sur mesure', '- Gestion des campagnes et des ciblages Email, SMS et Papier', '- Monitoring quotidien des bases et des outils (mise à jour, bases, interfaces…)', '- Conception et validation des bases de données et des processus de traitement des datas en équipe', '- Développement de processus automatiques des traitements des données', '- Contrôle final de la qualité de la base de données', '- Gestion et optimisation des bases de données MySQL de volumétrie importante', '- Mise en place d’un programme de loyality géré par des web services en temp réel', '- Segmentation (RFM) ,(RF)', '- Product OWNER d’une plateforme de retailer', '- Rédaction de la documentation technique et culture des stories', '- Etude de faisabilité et proposition de solutions adéquates aux développements demandés', '- Recette et validation technique croisée des développements effectués', '- Support client à l’utilisation des outils', '- Intégration WEB : Intégration PSD/CSS3-HTML5 (Responsive Design)', '- Gestion et  suivi des projets avec la méthodologie agile Scrum', '- Processus SVN /GIT', '- Recrutement des nouveaux développeurs', '- Intégration et encadrement des nouveaux recrutés']
Sentence 2 tokens =======
Développement de reporting sur-mesure avec zend framework', '- Conception et développement des datamarts projets', '- Réalisation des comptages et extractions sur mesure', '- Gestion des campagnes et des ciblages Email, SMS et Papier', '- Monitoring quotidien des bases et des outils (mise à jour, bases, interfaces…)', '- Conception et validation des bases de données et des processus de traitement des datas en équipe', '- Développement de processus automatiques des traitements des données', '- Contrôle final de la qualité de la base de données', '- Gestion et optimisation des bases de données MySQL de volumétrie importante', '- Mise en place d’un programme de loyality géré par des web services en temp réel', '- Segmentation (RFM) ,(RF)', '- Product OWNER d’une plateforme de retailer', '- Rédaction de la documentation technique et culture des stories', '- Etude de faisabilité et proposition de solutions adéquates aux développements demandés', '- Recette et validation technique croisée des développements effectués', '- Support client à l’utilisation des outils', '- Intégration WEB : Intégration PSD/CSS3-HTML5 (Responsive Design)', '- Gestion et  suivi des projets avec la méthodologie agile Scrum', '- Processus SVN /GIT', '- Recrutement des nouveaux développeurs', '- Intégration et encadrement des nouveaux recrutés']

有趣的是,并不是所有的句子都重复了。我不知道从这里去哪里。

我尝试了 CoreNLP,结果非常糟糕。然后我尝试了 Stanza,它给出了有希望的结果,但我不知道从那里把它带到哪里。

python nlp stanford-nlp
© www.soinside.com 2019 - 2024. All rights reserved.