I've seen lots of questions and solutions regarding determining unique nodes in XSLT
It's too bad you missed all the good ones - i.e. those dealing with Muenchian grouping. Try it this way:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:key name="field-by-suffix" match="field" use="substring-after(.,': ')" />
<xsl:template match="/">
<xsl:for-each select="root/data/field[count(. | key('field-by-suffix', substring-after(.,': '))[1]) = 1]">
<xsl:text>short_field=</xsl:text>
<xsl:value-of select="substring-after(.,': ')" />
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
When applied to the following example input:
<root>
<data><field>alpha: keyword1</field></data>
<data><field>bravo: keyword2</field></data>
<data><field>charlie delta: keyword1</field></data>
<data><field>echo: keyword2</field></data>
<data><field>foxtrot: keyword1</field></data>
<data><field>golf hotel: keyword1</field></data>
<data><field>echo: keyword2</field></data>
</root>
the result is:
short_field=keyword1
short_field=keyword2