Phrase Reference Builder


This is a package that transforms phrase templates with references into phrases with its respective pronouns

from phrase_reference_builder.build import PhraseBuilder, Entity

builder = PhraseBuilder()
applejuice = Entity("Applejuice", builder.pronoun_repository.default)
print(builder.build(applejuice + "likes" + applejuice.pd + "bag"))

Output: Applejuice likes their bag

Features:

Deferring Entities

from phrase_reference_builder.types import PersonClassDependent, DeferredReference
from phrase_reference_builder.build import PhraseBuilder, Entity

schrodinger_like = PersonClassDependent("like", "like", "likes")
victim = DeferredReference("victim")
template = victim + schrodinger_like + victim.possessive_determiner + "bag"


builder = PhraseBuilder()
applejuice = Entity("Applejuice", builder.pronoun_repository.default)
print(builder.build(applejuice + "likes" + applejuice.pd + "bag",
                    deferred={"victim": applejuice}))

Output: Applejuice likes their bag

First and Second person pronouns

from phrase_reference_builder.types import PersonClassDependent
from phrase_reference_builder.build import PhraseBuilder, Entity

builder = PhraseBuilder()

applejuice = Entity("Applejuice", builder.pronoun_repository.default)
schrodinger_like = PersonClassDependent("like", "like", "likes")

print(builder.build(applejuice + schrodinger_like + applejuice.pd + "bag"))
print(builder.build(applejuice + schrodinger_like + applejuice.pd + "bag", speaker=applejuice))
print(builder.build(applejuice + schrodinger_like + applejuice.pd + "bag", listener=applejuice))

Output:

Applejuice likes their bag
I like my bag
you like your bag

Collectivity

from phrase_reference_builder.build import PhraseBuilder, Entity
from phrase_reference_builder.types import Reference

builder = PhraseBuilder()
applejuice = Entity("Applejuice", builder.pronoun_repository.default)
grapejuice = Entity("Grapejuice", builder.pronoun_repository.default)

reference = Reference([applejuice, grapejuice])

print(builder.build(reference + "are fighting for the throne"))

Output: Applejuice and Grapejuice are fighting for the throne

Custom Converters

from phrase_reference_builder.build import PhraseBuilder, Entity
from phrase_reference_builder.types import PersonClassDependent, DeferredReference


class ConvertToApplejuicePlease:
    def __entity__(self, builder: PhraseBuilder):
        return Entity("Applejuice", builder.pronoun_repository.default)


builder = PhraseBuilder()

schrodinger_like = PersonClassDependent("like", "like", "likes")
victim = DeferredReference("victim")
template = victim + schrodinger_like + victim.possessive_determiner + "bag"

print(builder.build(template, deferred={"victim": ConvertToApplejuicePlease()}))

Output: Applejuice likes their bag