<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def draw_diagram_labels(graph, pos=None, labels=None, font_size=12, font_color='k', font_family='sans-serif', font_weight='normal', alpha=1.0, bbox=None, ax=None, offset=None, **kwds):
 """ Draw node labels of graph. This draws only the node labels of a graph. Parameters graph : `networkx.Graph` A NetworkX graph. pos : mapping, optional A mapping with nodes as keys and positions as values. Positions should be sequences of length 2. If not specified (default), a diagram layout positioning will be computed. See `networkx.layout` and `pyrrole.drawing` for functions that compute node positions. labels : mapping, optional Node labels in a mapping keyed by node of text labels. font_size : `int`, optional Font size for text labels (default is ``12``). font_color : `str`, optional Font color `str` (default is ``'k'``, i.e., black). font_family : `str`, optional Font family (default is ``'sans-serif'``). font_weight : `str`, optional Font weight (default is ``'normal'``). alpha : `float`, optional The text transparency (default is ``1.0``). ax : `matplotlib.axes.Axes`, optional Draw the graph in the specified Matplotlib axes. offset : array-like or `str`, optional Label positions are summed to this before drawing. Defaults to zero vector. If `str`, can be either ``'above'`` (equivalent to ``(0, 1.5)``) or ``'below'`` (equivalent to ``(0, -1.5)``). Returns ------- mapping Mapping of labels keyed on the nodes. Examples -------- """

    if ax is None:
        ax = _plt.gca()

    if labels is None:
        labels = dict((n, n) for n in graph.nodes())

    if pos is None:
        pos = diagram_layout(graph)

    if offset is None:
        offset = _np.array([0., 0.])
    elif offset == "above":
        offset = _np.array([0., 1.5])
    elif offset == "below":
        offset = _np.array([0., -1.5])

    # set optional alignment
    horizontalalignment = kwds.get('horizontalalignment', 'center')
    verticalalignment = kwds.get('verticalalignment', 'center')

    text_items = {}  # there is no text collection so we'll fake one
    for n, label in labels.items():
        (x, y) = _np.asanyarray(pos[n]) + _np.asanyarray(offset)
        if not isinstance(label, str):
            label = str(label)  # this makes "1" and 1 labeled the same
        t = ax.text(x, y, label,
                    size=font_size,
                    color=font_color,
                    family=font_family,
                    weight=font_weight,
                    alpha=alpha,
                    horizontalalignment=horizontalalignment,
                    verticalalignment=verticalalignment,
                    transform=ax.transData,
                    bbox=bbox,
                    clip_on=True)
        text_items[n] = t

    return text_items