File size: 3,510 Bytes
34367da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/env python3
"""Check Clone Profile i Neo4j"""
from neo4j import GraphDatabase

driver = GraphDatabase.driver(
    'neo4j+s://054eff27.databases.neo4j.io', 
    auth=('neo4j', 'Qrt37mkb0xBZ7_ts5tG1J70K2mVDGPMF2L7Njlm7cg8')
)

with driver.session() as s:
    # Clone Profile
    result = s.run('''
        MATCH (p:CloneProfile)
        RETURN p.name as name, p.role as role, p.totalMessages as msgs, 
               p.formalityScore as formality, p.technicalDensity as tech,
               p.personalityTraits as traits, p.expertiseAreas as expertise
    ''')
    print("=" * 60)
    print("🧬 CLONE PROFILE I NEO4J")
    print("=" * 60)
    for r in result:
        print(f"Navn: {r['name']}")
        print(f"Rolle: {r['role']}")
        print(f"Beskeder analyseret: {r['msgs']}")
        print(f"Formalitet: {round(r['formality'] * 100)}%")
        print(f"Teknisk densitet: {round(r['tech'] * 100)}%")
        print()
        print("Personlighedstræk:")
        for trait in r['traits']:
            print(f"  • {trait}")
        print()
        print("Ekspertiseområder:")
        for exp in r['expertise']:
            print(f"  🎯 {exp}")
    
    # Knowledge domains with relationships
    print()
    print("=" * 60)
    print("🧠 KNOWLEDGE DOMAINS")
    print("=" * 60)
    result = s.run('''
        MATCH (p:CloneProfile)-[r:HAS_EXPERTISE]->(d:KnowledgeDomain)
        RETURN d.name as domain, r.confidence as conf, r.messageCount as count
        ORDER BY r.confidence DESC LIMIT 8
    ''')
    for r in result:
        bar = "█" * int(r['conf'] * 10)
        print(f"  {r['domain']:25} {bar} {round(r['conf'] * 100)}%")
    
    # Common phrases
    print()
    print("=" * 60)
    print("💬 COMMON PHRASES (cleaned)")
    print("=" * 60)
    result = s.run('''
        MATCH (p:CloneProfile)-[r:USES_PHRASE]->(ph:CommonPhrase)
        WHERE NOT ph.phrase CONTAINS 'http' 
          AND NOT ph.phrase CONTAINS 'mailto'
          AND NOT ph.phrase CONTAINS 'urldefense'
        RETURN ph.phrase as phrase, r.frequency as freq
        ORDER BY r.frequency DESC LIMIT 10
    ''')
    for r in result:
        print(f"  \"{r['phrase']}\" ({r['freq']}x)")
    
    # Topics (cleaned)
    print()
    print("=" * 60)
    print("🏷️ TOP TOPICS (cleaned)")
    print("=" * 60)
    result = s.run('''
        MATCH (p:CloneProfile)-[r:DISCUSSES]->(t:CloneTopic)
        WHERE NOT t.name CONTAINS 'http' 
          AND NOT t.name CONTAINS 'mailto'
          AND NOT t.name CONTAINS 'urldefense'
          AND NOT t.name CONTAINS 'gnpmbas'
          AND NOT t.name CONTAINS 'safelink'
          AND size(t.name) > 3
        RETURN t.name as topic, r.frequency as freq
        ORDER BY r.frequency DESC LIMIT 20
    ''')
    for r in result:
        print(f"  {r['topic']}: {r['freq']}")
    
    # Total stats
    print()
    print("=" * 60)
    print("📊 TOTAL GRAPH STATS")
    print("=" * 60)
    result = s.run('''
        MATCH (p:CloneProfile)
        OPTIONAL MATCH (p)-[:HAS_EXPERTISE]->(d:KnowledgeDomain)
        OPTIONAL MATCH (p)-[:USES_PHRASE]->(ph:CommonPhrase)
        OPTIONAL MATCH (p)-[:DISCUSSES]->(t:CloneTopic)
        RETURN count(DISTINCT d) as domains, count(DISTINCT ph) as phrases, count(DISTINCT t) as topics
    ''')
    for r in result:
        print(f"  Knowledge Domains: {r['domains']}")
        print(f"  Common Phrases: {r['phrases']}")
        print(f"  Topics: {r['topics']}")

driver.close()
print()
print("✅ Clone Profile verificeret!")